2011-06-15 25 views
2

我想要使用正則表達式來獲取括號內的最後一個單詞,如果內部超過1個單詞。在任何情況下將Bazpreg_match - 模式 - 括號內的最後一個單詞

! KEYWORD (\Foo \Bar \Ban \Baz) "/" "Hello" 
! KEYWORD (\Foo \Bar \Baz) "/" "Hello" 
! KEYWORD (\Foo \Baz) "/" "Hello" 

感謝

+0

@Luzhin:問題已更新。但是,工作太多了...... – JesseJ 2011-06-15 13:49:28

回答

4

一種可能性是

.*\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。

+0

@stereofrog:你說得對。但是,我不知道是否可以在字符串的早期發生關閉,(儘管假設不可能是安全的)。這就是爲什麼我選擇使用'。*',並且這使'\ W'成爲必需。 – Tomalak 2011-06-15 14:05:35

相關問題