正規表現のドキュメントでわかるように、 \b は単語の境界に一致します。ひもを用意します
"db bd 方法"
と正規表現
\b(a|b)(c|d)\b
正規表現を実行すると、文字列の「bd」と一致するはずですが、一致しません。
しかし、正規表現が
\\b(a|b)(c|d)\\b
一致します。
違いを説明できますか?
正規表現のドキュメントでわかるように、 \b は単語の境界に一致します。ひもを用意します
"db bd 方法"
と正規表現
\b(a|b)(c|d)\b
正規表現を実行すると、文字列の「bd」と一致するはずですが、一致しません。
しかし、正規表現が
\\b(a|b)(c|d)\\b
一致します。
違いを説明できますか?
ここで作業中のエスケープのいくつかの層があります
正規表現----------------->| 正規表現リテラル->| 文字列リテラル ------------------------- + ------------------ + ----- ---------- 単語の境界| \ b | \\ b 交互("a"または"b")| (a | b)| (a | b) 交互("c"または"d")| (c | d)| (c | d) 単語の境界| \ b | \\ b
それが C または C++ プログラムの場合、コンパイラ自体が '\b' を解釈してコンパイル中に置換する可能性があるため、最初にコンパイラからエスケープする必要があります。
だからあなたが持っているなら
char *regex = "\\bword";
ソース ファイルで、それを正規表現関数に渡すと、'\bword' が返されます。
編集
それがObjective-Cに当てはまるかどうかはわかりません。経験がありません。