- ベストアンサー
正規表現で囲まれた部分の文字列
正規表現でダブルコーテーションで囲まれた部分の文字列 を検索したいのです。 \"([^\"])*\" とりあえずこんな感じで検索はできるのですが 問題はダブルコーテーションで囲まれた部分の エスケープ文字\の判定が上手くできません。 ([^\"]) この部分でダブルコーテーション以外の文字列、 ただし\"は除くって感じにしたいのですがどうすれば良いでしょうか。 宜しくお願いします。 正規表現のエンジンはBREGEXP.DLLです。 http://www.hi-ho.ne.jp/babaq/bregexp.html
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
([^\"]) を (\\\"|[^\"]) としたらでどうでしょうか。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10359)
回答No.2
まず、正規表現の\と、それをC言語などの文字列として" "の中に書く場合の" "中での\が混同されているような気がします。 ダブルクォーテーションで囲まれた部分の正規表現は、 "([^"]*)" で、これを " " 内に書くときに、「"」が「\"」になり、 \"([^\"]*)\" になります。お書きのものは*と)が逆ですがタイプミスでしょう。 で、問題の、「\"」も「" "」内に書けることにした場合の正規表現は、 "(((\\")|[^"])*)" これを、Cの " " 内に書くときは、「"」が「\"」に、「\」が「\\」になるので、 \"(((\\\\\")|[^\"])*)\" になります。 BREGEXP.DLLは使ったことが無いので、一般に使われる(拡張)正規表現での話です。
質問者
お礼
詳しい説明有難うございます。勉強になりました。
お礼
なるほど。大変参考になりました。 有難うございました。