01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2010-03-05 Fri
■ std.regex での正規表現にはWYSIWYG文字列を使う [D言語]
std.regex での正規表現で普通の文字列を使うと、
regex 関数に渡す \ の数とマッチされる文字列の \ の数が、
一致しないので、しんどい。
auto r2 = regex("\"\\\""); //\"\\\" にマッチしないで \"\"にマッチ auto r3 = regex("\"\\\\\""); //\"\\\" にマッチ
WYSIWYG文字列つかうとエスケープが楽になる。
auto r1 = regex(`"\\"`); //\"\\\" にマッチ auto r2 = regex(r"`\\`"); //\`\\` にマッチ
この場合 " と ` が混在する \"\\` にマッチ正規表現が書けない。
そこで、" と ` が混在できるデリミタ指定文字列がおすすめ。
auto r1 = regex(q"{"\\`}"); //\"\\` にマッチ