• 締切済み

正規表現について

t1t あいうえお t2t かきくけこ t3t さしすせそ という文章があったとして t2tからt3tの直前まで正規表現で抽出したいので、 t2tとそこから「改行+t」以外の文字の連続 を正規表現で表したいと思い t2t[^(\nt)]* としましたがだめでした どなたかご指導ください

みんなの回答

回答No.3

まず、\nはWordの改行にマッチしません。 Wordの改行(vbCr)は debug.print asc(vbcr)とやると10進数で13と 出ますんで、16進数でdとなり、 vbscriptの正規表現で\x0dと表せます。 で、もう1点が問題なんですが、 vbscriptの正規表現では後方参照ができないみたい? パターン中での後方参照は可能なんですが、 それだけ抜き出すというのが、できないようです。 ですので、まわりの文字と合わせて抜き出し、 置換なりするしかないと思います。

回答No.2

VB 使って、 普通のテキストファイルに 対して行ってるのですか。 あるいはWord等他の アプリケーションのファイル? できれば、VBのその部分のコードを 記載してほしい。 そのファイルどのように読み込んでるかとか。

yambal-net
質問者

補足

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

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

正規表現を使用しているソフトはなんでしょうか。 perl,awk,sed等があり、ソフトにより正規表現の規約も異なります。 OS名、ソフト名(日本語対応かどうかも含めて)を提示していただけると、よい回答が得られると思います。

yambal-net
質問者

補足

VBの VBScript.RegExp を使用しています。

関連するQ&A