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

发布于 2024-11-15 10:56:03 字数 224 浏览 2 评论 0原文

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

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

谢谢

I'm trying to use a regex to get the last word within the parentheses if there is more than 1 word inside. In all cases will be Baz

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

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坏尐絯℡ 2024-11-22 10:56:03

一种可能性是

.*\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,直到表达式的其余部分可以匹配 - 或者整个表达式失败)。

在这种情况下,某物是一个单词字符序列,前面是一个非单词字符,后面是一个右括号。

One possibility would be

.*\W(\w+)\s*\)

Explanation

.*     #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

This regex works because it actively uses backtracking to find "the last occurrence of something" in a string (i.e. step #2 is repeated until the rest of the expression can match - or the entire expression fails).

In this case something is a sequence of word characters preceded by a non-word character and followed by a closing paren.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文