• ベストアンサー

正規表現で囲まれた部分の文字列

正規表現でダブルコーテーションで囲まれた部分の文字列 を検索したいのです。 \"([^\"])*\" とりあえずこんな感じで検索はできるのですが 問題はダブルコーテーションで囲まれた部分の エスケープ文字\の判定が上手くできません。 ([^\"]) この部分でダブルコーテーション以外の文字列、 ただし\"は除くって感じにしたいのですがどうすれば良いでしょうか。 宜しくお願いします。 正規表現のエンジンはBREGEXP.DLLです。 http://www.hi-ho.ne.jp/babaq/bregexp.html

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

  • ベストアンサー
  • bender
  • ベストアンサー率45% (108/236)
回答No.1

([^\"]) を (\\\"|[^\"]) としたらでどうでしょうか。

sha-girl
質問者

お礼

なるほど。大変参考になりました。 有難うございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

まず、正規表現の\と、それをC言語などの文字列として" "の中に書く場合の" "中での\が混同されているような気がします。 ダブルクォーテーションで囲まれた部分の正規表現は、 "([^"]*)" で、これを " " 内に書くときに、「"」が「\"」になり、 \"([^\"]*)\" になります。お書きのものは*と)が逆ですがタイプミスでしょう。 で、問題の、「\"」も「" "」内に書けることにした場合の正規表現は、 "(((\\")|[^"])*)" これを、Cの " " 内に書くときは、「"」が「\"」に、「\」が「\\」になるので、 \"(((\\\\\")|[^\"])*)\" になります。 BREGEXP.DLLは使ったことが無いので、一般に使われる(拡張)正規表現での話です。

sha-girl
質問者

お礼

詳しい説明有難うございます。勉強になりました。

関連するQ&A