我发现了一些像
这样的表达方式\((.*?)\)
可以很好地找到括号中的任何文字,例如(文本)
和
^((?!.*(word1|word2|word3)).*)+
查找不包含任何特定字词的文字,例如 word4abcd ,而不是示例word1测试
如何合并它们以在括号中查找不包含这些词语的文字,如(示例)而不是(示例word2)?
提前致谢
答案 0 :(得分:1)
第一个正则表达式使用不情愿的量词*?
来确保第一个可用的右括号在开始括号后匹配。第二个正则表达式使用零宽度负前瞻组(即(?!...)
构造)来防止匹配某些单词。为了结合这些技巧,我们正在寻找类似的东西:
\(((?!something).*?)\)
问题是代替something
的问题。简单地将.*(word1|word2)
放在那里就行不通了:这也会禁止word1
或word2
在括号之外。将.*
替换为.*?
不会改变这一点。 [^)]*(word1|word2)
的作品是什么,它将匹配不等于)
后跟word1
或word2
的任何字符序列。
结果表达式是
\(((?![^)]*(word1|word2)).*?)\)
将匹配不包含word1
或word2
的括号中的表达式。
答案 1 :(得分:0)
问题不是很明确,但我举一个可能对你有帮助的例子。
看看这个正则表达式:
/\((?!.*?\bexample\s+word\b[^)]*\)).*?\bexample\b.*?\)/
这匹配方括号内的单词example
。如果方括号中没有example word
,则会发生匹配。
\b
已用于字边界,因此examples
不匹配。
答案 2 :(得分:0)
也许这就是你想要的?
^\(((?!.*word1)(\S)*)|(\3)\)
匹配:(wordwordexample) 不匹配:( word wordexample) (word1wordexample)