可能是重复的;我以为这个问题一定已经被问过了,但我搜索了一下,没有找到。
如何使用RegExp确定子字符串是否位于括号之间
假设我想检查以下句子中的文本"狐狸"是否被括号包围:
The (quick) brown fox jumps (over the lazy) dog.
我试过这个RegEx,但当"fox"实际上没有括号,但左右两边都有括号时,它的测试结果是正确的:
(.*?fox.*?)
我试过用负向后看和负向前看,但也不起作用:
(.*?(?<!)).*?fox.*?(?!().*?)
这里有一种方法可以保证单词只存在于内括号中,而不存在于嵌套的东西中:
https://regex101.com/r/UlQpM6/1
([^()]*fox[^()]*)
(
-打开
非括号的任何字符的[^()]*
-0或更多
fox
-福克斯
[^()]*
-重复模式
)
-关闭
这将匹配括号中的任何术语:
(.*?)
(快速(棕色狐狸跳过懒惰的狗。
这个问号将确保正则表达式是"惰性"的,并且只匹配右括号的第一个实例。
去掉这样的问号:(.*)
会给你以下匹配,这可能不是你想要的:
棕色狐狸(敏捷的(跳过懒狗。
如果你真的只想匹配";(狐狸(";,那么正确的正则表达式是:
(fox)
您可以使用在线regex测试仪或文本编辑器来回答这些问题。