- ベストアンサー
VBAで正規表現を使用して部分を抽出する方法
- VBAで正規表現を使って特定の部分を抽出する方法を教えてください。
- 具体的には、指定した文字列から特定の部分を取り出すために、どのように正規表現を使用すればよいのでしょうか。
- 現在は特定のパターンにマッチする文字列を抽出していますが、さらに特定の箇所を抽出する方法を知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今日を。 正規表現で解決するとすれば次のようになります。 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文字を取り除くとか
その他の回答 (1)
- ki-aaa
- ベストアンサー率49% (105/213)
#1で回答したものです。 前の回答をづぎの物に代えて、実行してみてください。 正規表現.Pattern = "購入日時([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 )([0-9]{1,2}時[0-9]{1,2}分)" 抜き出し = 一致集団(0).SubMatches(1)
お礼
ありがとうござます。 複雑なので、よくわかっていませんが、ゆっくり解読したいと思います。 なんか、SubMatchesで出来そうな気がします。 ありがとうございました。