1.5. 検索・置換
1.5.7. 正規表現鍵語外置
検索式に一致したデータをその位置とともに抽出します。一致したデータは文脈の外 の定位置に置きます(KWOC: Key Word out of Context)。
¥c{3}
%r# # 段落
profesor 2 Rumi: Hola, {*profesor*}.
ntr 5
Rumi: Buenos días. Nos enco{*ntr*}amos ahora en la Universidad Complutense de Madrid. ¿Dónde nos vamos ahora?
mpl 5
Rumi: Buenos días. Nos encontramos ahora en la Universidad Co{*mpl*}utense de Madrid. ¿Dónde nos vamos ahora?
iniciar 8 Prof.: Bueno, vamos a {*iniciar*} hoy el Camino del Cid, la primera parte.
ser 10
Va a {*ser*} un viaje de diez días, durante el cual, no solamente vamos a recorrer los lugares que aparecen mencionados en esta famosa obra de la literatura española, sino que además, vamos a estar en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los pueblos que vamos a recorrer.
recorrer 10
Va a ser un viaje de diez días, durante el cual, no solamente vamos a {*recorrer*} los lugares que aparecen mencionados en esta famosa obra de la literatura española, sino que además, vamos a estar en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los
89
pueblos que vamos a recorrer.
estar 10
Va a ser un viaje de diez días, durante el cual, no solamente vamos a recorrer los lugares que aparecen mencionados en esta famosa obra de la literatura española, sino que además, vamos a {*estar*} en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los pueblos que vamos a recorrer.
recorrer 10
Va a ser un viaje de diez días, durante el cual, no solamente vamos a recorrer los lugares que aparecen mencionados en esta famosa obra de la literatura española, sino que además, vamos a estar en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los pueblos que vamos a {*recorrer*}.
鍵語の環境条件
言語データ分析では検索対象(鍵語)だけでなく、その前後の環境を考慮するするこ とがあります。たとえば次はスペイン語の前置詞enがどのような文要素の後にあるか を見るための検索式とその検索結果です。
(&) (en)(¥L)=><_$1_> $2$3 段落番号 段落
ahora 3
Rumi: Buenos días. Nos encontramos {*ahora*} en la Universidad Complutense de Madrid. ¿Dónde nos vamos ahora?
mencionados 5
Va a ser un viaje de diez días, durante el cual, no solamente vamos a recorrer los lugares que aparecen {*mencionados*} en esta famosa obra de la literatura española, sino que además, vamos a estar en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los pueblos que vamos a recorrer.
90
estar 5
Va a ser un viaje de diez días, durante el cual, no solamente vamos a recorrer los lugares que aparecen mencionados en esta famosa obra de la literatura española, sino que además, vamos a {*estar*} en contacto con personas, con documentos vivos que nos cuenten cómo es la vida, a qué se dedican, qué inquietudes tienen las personas de los pueblos que vamos a recorrer.
置換文字の<_..._>で囲まれた部分が検索文字列になりますが、検索の処理においては、
後続するenが環境条件となります。
Sub ▼鍵語外置()
追加文字列$ = vbTab & "段落番号" & vbTab & "段落" & vbCr: ●高速文字列作成
For Each 段落v In 段落配列$
For i = 0 To UBound(検索$) If 検索$(i) = "" Then Exit For
段落v = 正規表現置換$(段落v, 検索$(i), 置換$(i), False) obj正規表現.Pattern = "¥{¥*.+?¥*¥}"
Set 一致コレクション v = obj正規表現.Execute(段落v) 段落番号& = 段落番号& + 1
For Each 一致v In 一致コレクション v
追加文字列$ = 括弧除去$(一致v) & vbTab _
& 段落番号& & vbTab & 括弧除去$(Left$(段落v, 一致v.FirstIndex)) _ & 一致v _
& 括弧除去$(Mid$(段落v, 一致v.FirstIndex + Len(一致v) + 1)) & vbCr ●高速文字列作成
Next
段落v = 括弧除去$(段落v) Next
Next
If Mid$(出力文字列$, 出力文字数& - 2, 2) = "段落" _ Then MsgBox "出力がありません。": Exit Sub
91
objクリップボード.SetText Left$(出力文字列$, 出力文字数&) objクリップボード.PutInClipboard
With objエクセル
.WorkBooks.Add 'ワークブックを追加 .Columns(3).ColumnWidth = 80
.ActiveSheet.Paste 'データペースト .Columns(1).ColumnWidth = 30 '鍵語の幅 .Cells(1, 1) = txt検索置換式
.Columns(3).WrapText = True '折り返し .Columns(1).AutoFit '列幅を自動調整 .Columns(2).AutoFit '列幅を自動調整
.Range("A2").Select: .ActiveWindow.FreezePanes = True 'ウィンドー枠固定
If chkソート _
Then .ActiveSheet.UsedRange.Sort Header:=True, Key1:=.Cells(2, 1) .Visible = True 'エクセルを表示
End With End Sub
個々の段落ごとにマッチした鍵語、段落番号、段落を出力します。段落は前文脈、鍵 語、後文脈にそれぞれ必要な処理をしてから連続させます。最後にクリップボードを 介してエクセルシートに出力します。