0

我发现了一些类似的表达

\((.*?)\) 

可以很好地找到括号中的任何文本,如(文本)

^((?!.*(word1|word2|word3)).*)+

查找不包含任何特定单词的文本,例如word4abcd,而不是例如 word1 测试

如何合并它们以查找括号中不包含这些单词的文本,例如 in (example)和 not like (example word2)

提前致谢

4

3 回答 3

1

第一个正则表达式使用一个不情愿的量词*?来确保第一个可用的右括号在左括号之后匹配。第二个正则表达式使用零宽度负前瞻组(即(?!...)构造)来防止匹配某些单词。为了结合这些技巧,我们正在研究这样的事情:

\(((?!something).*?)\)

问题是代替something. 简单地放在.*(word1|word2)那里是行不通的:这也将禁止word1word2在括号之外。替换.*.*?不会改变这一点。起作用的是[^)]*(word1|word2)将匹配任何不等于 or 的)字符word1序列word2

然后得到的表达式是

\(((?![^)]*(word1|word2)).*?)\)

这将匹配不包含word1或的括号表达式word2

于 2013-09-29T12:51:50.233 回答
0

问题不是很清楚,但我举一个可能对你有帮助的例子。

看看这个正则表达式:

/\((?!.*?\bexample\s+word\b[^)]*\)).*?\bexample\b.*?\)/

这匹配example方括号内的单词。example word如果方括号中没有,则匹配将发生。

\b已用于单词边界,因此examples不匹配。

于 2013-09-29T12:31:33.763 回答
0

也许这就是你想要的?

^\(((?!.*word1)(\S)*)|(\3)\)

匹配:(wordwordexample)不匹配:(word wordexample)(word1wordexample)

于 2013-09-29T12:50:40.370 回答