如何使用RegExp确定子字符串是否位于括号之间



可能是重复的;我以为这个问题一定已经被问过了,但我搜索了一下,没有找到。

如何使用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测试仪或文本编辑器来回答这些问题。

最新更新