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