- 締切済み
正規表現について
t1t あいうえお t2t かきくけこ t3t さしすせそ という文章があったとして t2tからt3tの直前まで正規表現で抽出したいので、 t2tとそこから「改行+t」以外の文字の連続 を正規表現で表したいと思い t2t[^(\nt)]* としましたがだめでした どなたかご指導ください
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- GuruGuru22
- ベストアンサー率51% (177/346)
回答No.3
まず、\nはWordの改行にマッチしません。 Wordの改行(vbCr)は debug.print asc(vbcr)とやると10進数で13と 出ますんで、16進数でdとなり、 vbscriptの正規表現で\x0dと表せます。 で、もう1点が問題なんですが、 vbscriptの正規表現では後方参照ができないみたい? パターン中での後方参照は可能なんですが、 それだけ抜き出すというのが、できないようです。 ですので、まわりの文字と合わせて抜き出し、 置換なりするしかないと思います。
- GuruGuru22
- ベストアンサー率51% (177/346)
回答No.2
VB 使って、 普通のテキストファイルに 対して行ってるのですか。 あるいはWord等他の アプリケーションのファイル? できれば、VBのその部分のコードを 記載してほしい。 そのファイルどのように読み込んでるかとか。
- tatsu99
- ベストアンサー率52% (391/751)
回答No.1
正規表現を使用しているソフトはなんでしょうか。 perl,awk,sed等があり、ソフトにより正規表現の規約も異なります。 OS名、ソフト名(日本語対応かどうかも含めて)を提示していただけると、よい回答が得られると思います。
質問者
補足
VBの VBScript.RegExp を使用しています。
補足
VBを使って普通の文字列に対して行っています。 (Wordの全文を変数「検索対象」に読み込み、 正規表現を代入している「検索表現」で検索します) ソースは下記のような感じです Sub test() Dim 検索結果() 検索対象 = ActiveDocument.Content 検索表現 = (正規表現) Set 検索obj = CreateObject("VBScript.RegExp") 検索obj.Pattern = 検索表現 検索obj.Global = True 検索obj.IgnoreCase = True Set 検索結果列obj = 検索obj.Execute(検索対象) 列 = 0 For Each 検索結果obj In 検索結果列obj 列 = 列 + 1 ReDim Preserve 検索結果(列) 検索結果(列) = 検索結果obj.Value MsgBox 検索結果(列) 'テスト Next End Sub