\\ b根據我看到的正則表達式的文件是\ B匹配單詞邊界英寸 予準備的字符串 B對正則表達式中
「分貝BD如何」
和正則表達式
\ B(A | B)(C | d)\ b
我想運行正則表達式時,就應該匹配字符串「BD」,但它沒有。
但是,如果正則表達式是
\\ B(A | B)(C | d)\\ b
它匹配。
你能解釋的區別?
\\ b根據我看到的正則表達式的文件是\ B匹配單詞邊界英寸 予準備的字符串 B對正則表達式中
「分貝BD如何」
和正則表達式
\ B(A | B)(C | d)\ b
我想運行正則表達式時,就應該匹配字符串「BD」,但它沒有。
但是,如果正則表達式是
\\ B(A | B)(C | d)\\ b
它匹配。
你能解釋的區別?
有在工作中逃離這裏
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
如果是在C或C++程序,編譯器本身可能會將「\ b」和編譯過程中替代它,所以你需要首先從編譯器逃避它。
所以,如果你有
char *regex = "\\bword";
在源文件
,並將它傳遞給正則表達式的功能,它會收到「\ bword」。
編輯
我不知道它是否適用於Objective-C的,我與它沒有任何經驗。
謝謝你,你的答案是正確的。但我選擇Tomalak作更多解釋 –
您使用的是Objective-C的哪種語言的幾層? – kennytm
這真的取決於上下文。如果你在一個字符串中提供表達式,那麼在大多數編程語言中,'''''也是字符串中的轉義字符,所以你必須轉義''\''爲表達式創建一個反斜槓。否則,取決於語言,表達式最終可能爲'b(a | b)(c | d)b'。 –
@KennyTM:是的,我使用的Objective-C –