• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbaの正規表現で、マッチした一部分を抽出したい)

VBAで正規表現を使用して部分を抽出する方法

このQ&Aのポイント
  • VBAで正規表現を使って特定の部分を抽出する方法を教えてください。
  • 具体的には、指定した文字列から特定の部分を取り出すために、どのように正規表現を使用すればよいのでしょうか。
  • 現在は特定のパターンにマッチする文字列を抽出していますが、さらに特定の箇所を抽出する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

今日を。 正規表現で解決するとすれば次のようになります。 Sub test() Dim sss As String sss = "aaaa購入日時2012年1月25日 17時53分bbbbcccc購入日時2012年1月25日 17時53分dddd" ' sss = "aaa" sss = 抜き出し(sss) Debug.Print sss End Sub Function 抜き出し(ByVal 指定文字列 As String) As String Dim 正規表現, 一致集団, 一致要素 Set 正規表現 = CreateObject("VBScript.RegExp") 正規表現.Pattern = "購入日時([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 [0-9]{1,2}時[0-9]{1,2}分)" 'パターンを括弧で囲む 正規表現.MultiLine = True Set 一致集団 = 正規表現.Execute(指定文字列) '正規表現.Global = True を指定していないので、一件だけ抽出する。 Debug.Print 一致集団.Count If 一致集団.Count > 0 Then 抜き出し = 一致集団(0).SubMatches(0) '.SubMatches(0) 'Patternを()でククッタ箇所取り出し End If End Function それ以外に、置き換えで、"購入日時"を空白にするとか Right関数で、4文字を取り除くとか

a-z_A-Z
質問者

お礼

ありがとうござます。 複雑なので、よくわかっていませんが、ゆっくり解読したいと思います。 なんか、SubMatchesで出来そうな気がします。 ありがとうございました。

その他の回答 (1)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

#1で回答したものです。 前の回答をづぎの物に代えて、実行してみてください。 正規表現.Pattern = "購入日時([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 )([0-9]{1,2}時[0-9]{1,2}分)" 抜き出し = 一致集団(0).SubMatches(1)

関連するQ&A