正则表达式:如何匹配以括号“)”结尾的单词
Posted
技术标签:
【中文标题】正则表达式:如何匹配以括号“)”结尾的单词【英文标题】:regex : how to match word ending with parentheses ")" 【发布时间】:2016-06-21 21:10:11 【问题描述】:我想匹配以 ')' 结尾的字符串。 我使用模式:
"[)]\b" or ".*[)]\b"
它应该匹配字符串:
x=main2.addMenu('Edit')
但它不起作用。怎么了?
【问题讨论】:
您使用什么语言?为什么不直接使用\)\b
?
在 JS 中,可能是这样的:(.*?\)$)
- 捕获字符串末尾的所有内容,直到转义的 ')'。
^.*?\)$
我猜是你想要的
感谢您的回复,“)”不起作用。我在这里试过:regex101.com
【参考方案1】:
\b 只匹配单词边界的位置。将其视为(^\w|\w$|\W\w|\w\W)
,其中 \w 是任何字母数字字符,而 \W 是任何非字母数字字符。括号是非字母数字,因此不会被 \b 匹配。
只需匹配一个括号,然后使用\)$
匹配字符串的结尾
【讨论】:
谢谢,很好的解释。我使用这个网站:regex101.com。我试过那个'$'并且它有效。但是如果我有多行字符串,那么我将匹配最后一行。所以也许我必须先把多行分解成单独的行。或任何其他解决方案? 如果你想编写一个匹配多行的正则表达式,那么你需要添加一个修饰符,这取决于你使用的语言。请参阅this 问题。【参考方案2】:如果您想捕获以)
结尾的字符串(而不仅仅是找到结尾的)
),那么您可以在JS 中使用它:
(.*?\)$)
(....)
- 捕获定义的内容;
.*?
- 匹配任何直到下一个元素;
\)$
- 字符串末尾的)
(需要转义);
Regex101
【讨论】:
【参考方案3】:\b
单词边界不明确:在单词字符之后,它要求下一个字符必须是非单词 one 或字符串结尾。当它位于非单词字符(如)
)之后时,它需要紧跟其后出现一个单词字符(字母/数字/下划线)(这里不是字符串的结尾!)。
所以,有三种解决方案:
使用\B
(非单词边界):.*[)]\B
(请参阅demo)如果)
后跟单词字符,则不允许匹配
将.*[)]$
与MULTILINE
模式一起使用(在模式的开头添加(?m)
或添加/m
修饰符,请参阅demo)
使用交替组模拟多行模式:.*[)](\r?\n|$)
(请参阅demo)
【讨论】:
以上是关于正则表达式:如何匹配以括号“)”结尾的单词的主要内容,如果未能解决你的问题,请参考以下文章