うちのカレーにはこれが入ってる!って食材ありますか?

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

正規表現のエンジンはBREGEXP.DLLです。
http://www.hi-ho.ne.jp/babaq/bregexp.html

A 回答 (2件)

([^\"])



(\\\"|[^\"])
としたらでどうでしょうか。
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/03/06 11:15

まず、正規表現の\と、それをC言語などの文字列として" "の中に書く場合の" "中での\が混同されているような気がします。



ダブルクォーテーションで囲まれた部分の正規表現は、
"([^"]*)"
で、これを " " 内に書くときに、「"」が「\"」になり、
\"([^\"]*)\"
になります。お書きのものは*と)が逆ですがタイプミスでしょう。

で、問題の、「\"」も「" "」内に書けることにした場合の正規表現は、
"(((\\")|[^"])*)"
これを、Cの " " 内に書くときは、「"」が「\"」に、「\」が「\\」になるので、
\"(((\\\\\")|[^\"])*)\"
になります。

BREGEXP.DLLは使ったことが無いので、一般に使われる(拡張)正規表現での話です。
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/03/06 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報