• ベストアンサー

VBAでの正規表現(regExp)がうまく表せません。

エクセル2000のVBAで正規表現を使用してシングルクオーテーションに囲まれた文字を取得したいのですが、どうやったらよいのでしょうか。 検索対象文字列 = 今日は'家族'と'ピクニック'にいきます。 の時、「'家族'」 と 「'ピクニック'」の2つを取得したいのですが、「'家族'と'ピクニック'」が取得されてしまいます。 Pattern = "'.+'" ではダメなんでしょうか。 パターンをお教えいただければ、きっとmatchsコレクションとかはどうにかなると思いますので、ぜひともご教授くださいませ。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 正規表現については下記 URL の「どこまで繋がるのか?」の記事 が参考になりますよ。 http://www.sixnine.net/regexp/regexp7.html Sub Sample()   Dim Reg  As Object ' As RegExp   Dim Mc  As Object ' As MatchCollection   Dim M   As Object ' As Match      Set Reg = CreateObject("VBScript.RegExp")   With Reg     .Pattern = "'.*?'"     .IgnoreCase = False     .Global = True     Set Mc = .Execute("「'家族'」 と 「'ピクニック'」")   End With   For Each M In Mc     MsgBox M.Value   Next   Set Mc = Nothing   Set Reg = Nothing End Sub

celena
質問者

お礼

大変、大変遅くなりましたが締めさせていただきます。 ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 最長マッチを避ける方法としては、他に、こんなものがあります。  .Pattern = "'[^']+'"  こちらは、確実に「'..'」で、はさまれている文字しか、拾い出しません。IEログを取り出す時に、こちらを使っています。「''」は、無視されます。

関連するQ&A