2
我想要使用正則表達式來獲取括號內的最後一個單詞,如果內部超過1個單詞。在任何情況下將Baz
preg_match - 模式 - 括號內的最後一個單詞
! KEYWORD (\Foo \Bar \Ban \Baz) "/" "Hello"
! KEYWORD (\Foo \Bar \Baz) "/" "Hello"
! KEYWORD (\Foo \Baz) "/" "Hello"
感謝
我想要使用正則表達式來獲取括號內的最後一個單詞,如果內部超過1個單詞。在任何情況下將Baz
preg_match - 模式 - 括號內的最後一個單詞
! KEYWORD (\Foo \Bar \Ban \Baz) "/" "Hello"
! KEYWORD (\Foo \Bar \Baz) "/" "Hello"
! KEYWORD (\Foo \Baz) "/" "Hello"
感謝
一種可能性是
.*\W(\w+)\s*\)
說明
.* #1 runs to the end of the string
\W #2 backtracks to a non-"word character"
(\w+) #3 captures all following "word characters" into group 1
\s* #4 optional white space
\) #5 mandatory literal closing paren
此正則表達式的作品,因爲它積極利用回溯找到「的最後發生的事情「在一個字符串中(即重複步驟#2直到表達式的其餘部分可以匹配 - 或者整個表達式失敗)。
在這種情況下東西是一個由非單詞字符開頭的單詞字符序列,後面跟着一個關閉paren。
@stereofrog:你說得對。但是,我不知道是否可以在字符串的早期發生關閉,(儘管假設不可能是安全的)。這就是爲什麼我選擇使用'。*',並且這使'\ W'成爲必需。 – Tomalak 2011-06-15 14:05:35
@Luzhin:問題已更新。但是,工作太多了...... – JesseJ 2011-06-15 13:49:28