トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

4-21 文字列データのカンマを検索(Cのエスケープ方式)

正規表現パズル

CSVデータの、文字列データのカンマを検索する。

文字列データは、ダブルコーテーションでくくったデータですが、
\\は文字としての\
\"は文字としてのダブルコーテーション
\tはタブ
とします(Cのエスケープ方式)

検索前


検索後


対象データ

1,"abcd,efg","a,bc\\","dd\"\",\"ee,"
"aaa,aa\"c,cc",1,"ee\\\t,\\\\"
1,"\",\",\"ab,\"c,d\"e,f"


正規表現

,(?!(((((?<=\\)|(?!(\\{2})*")).)*(?<!\\)(?=(\\{2})*").){2})*
(((?<=\\)|(?!(\\{2})*")).)*$)


解説

行末までに、\が偶数個連続した直後の"が
奇数個あれば文字列データのカンマと考えます

(?<!\\)(?=(\\{2})*")
の否定はドモルガンの法則を使って
((?<=\\)|(?!(\\{2})*"))
となります