preg_match - pattern - 括号内的最后一个单词

时间:2011-06-15 13:43:51

标签: php preg-match

如果内部有超过1个单词,我正在尝试使用正则表达式来获取括号内的最后一个单词。在所有情况下都是Baz

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

由于

1 个答案:

答案 0 :(得分: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直到表达式的其余部分匹配 - 或整个表达式失败)。

在这种情况下,某事是一系列单词字符,前面是非单词字符,后跟一个结束语。