您如何使用 RegExp 确定子字符串是否在括号之间?
How do you determine, using RegExp, whether or not a substring is between parentheses?
可能重复;我以为这个问题应该已经有人问过了,但是我搜索了一下却找不到。
如何使用正则表达式判断子字符串是否在括号之间?
假设我要检查以下句子中的文本“fox”是否被括号括起来:
The (quick) brown fox jumps (over the lazy) dog.
我试过这个正则表达式,但当“fox”实际上没有括号但左右都有括号时它测试为真:
\(.*?fox.*?\)
我用负向后视和负向前视都试过了,也没用:
\(.*?(?<!\)).*?fox.*?(?!\().*?\)
这将匹配括号中的任何术语:
\(.*?\)
(快)棕狐跳(越过)懒狗
这个问号将确保正则表达式是 'lazy' 并且只会匹配右括号的第一个实例。
像这样删除问号:\(.*\)
将为您提供以下匹配项,这可能不是您想要的:
(快速)棕色狐狸跳过(越过) 懒狗。
如果您只想匹配“(fox)”,那么正确的正则表达式是:
\(fox\)
您可以使用在线正则表达式测试器或文本编辑器来回答此类问题。
这里有一种方法可以保证单词仅存在于内部括号中,而不存在于嵌套的内容中:
https://regex101.com/r/UlQpM6/1
\([^()]*fox[^()]*\)
\(
- 打开
[^()]*
- 0 个或多个非括号的字符
fox
- 狐狸
[^()]*
- 重复模式
\)
- 关闭
可能重复;我以为这个问题应该已经有人问过了,但是我搜索了一下却找不到。
如何使用正则表达式判断子字符串是否在括号之间?
假设我要检查以下句子中的文本“fox”是否被括号括起来:
The (quick) brown fox jumps (over the lazy) dog.
我试过这个正则表达式,但当“fox”实际上没有括号但左右都有括号时它测试为真:
\(.*?fox.*?\)
我用负向后视和负向前视都试过了,也没用:
\(.*?(?<!\)).*?fox.*?(?!\().*?\)
这将匹配括号中的任何术语:
\(.*?\)
(快)棕狐跳(越过)懒狗
这个问号将确保正则表达式是 'lazy' 并且只会匹配右括号的第一个实例。
像这样删除问号:\(.*\)
将为您提供以下匹配项,这可能不是您想要的:
(快速)棕色狐狸跳过(越过) 懒狗。
如果您只想匹配“(fox)”,那么正确的正则表达式是:
\(fox\)
您可以使用在线正则表达式测试器或文本编辑器来回答此类问题。
这里有一种方法可以保证单词仅存在于内部括号中,而不存在于嵌套的内容中:
https://regex101.com/r/UlQpM6/1
\([^()]*fox[^()]*\)
\(
- 打开
[^()]*
- 0 个或多个非括号的字符
fox
- 狐狸
[^()]*
- 重复模式
\)
- 关闭