正如我在正则表达式文档中看到的那样\ b匹配单词边界。 我准备了一个字符串
“db bd how to”
和正则表达式
\ B(A | B)(C | d)\ B'/ P>
我认为在运行正则表达式时,它应匹配字符串中的“bd”,但它不匹配。
但如果正则表达式是
\\ B(A | B)(C | d)\\ B'/ P>
匹配。
你能解释一下这个区别吗?
答案 0 :(得分:3)
这里有几层逃脱
regex -----------------> | regex literal -> | string literal -------------------------+------------------+--------------- word boundary | \b | \\b alternation ("a" or "b") | (a|b) | (a|b) alternation ("c" or "d") | (c|d) | (c|d) word boundary | \b | \\b
答案 1 :(得分:1)
如果是在C或C ++程序中,编译器本身可能会解释'\ b'并在编译期间将其替换,因此您需要先将其从编译器中转义。
所以,如果你有
char *regex = "\\bword";
在源文件中,并将其传递给正则表达式函数,它将收到'\ bword'。
修改强>
我不知道它是否适用于Objective-C,我没有经验。