2012-03-15 209 views
0

我需要使用正则表达式查找匹配,如果特定的词是不存在的查找字符串,如果文本没有包含特定单词

例 发现狐狸如果文本不存在老虎

所以,正则表达式应该匹配狐狸

"fox is an animal" 

,而不是在

匹配
"both fox and tiger are animals" 

需要一个定期expession

+1

你确定你需要一个单一的正则表达式来做到这一点吗?为什么不有两个正则表达式并接受字符串,如果第一个匹配而另一个不匹配? – 2012-03-15 14:21:50

+1

首先 - 什么语言?其次 - 为什么你需要在一个正则表达式中做到这一点?当然,按照if(!string.contains('tiger')){match = string.find('fox')}'的方式写一些东西会更有意义。 – ruakh 2012-03-15 14:22:08

+0

你是否必须使用正则表达式,这似乎更容易使用'contains'方法(或任何语言中的等价物),即在java中:if(!string.contains(“tiger”)){// Do东西}'。 – twain249 2012-03-15 14:23:19

回答

2

linux你可以这样做:

cat input.txt | grep -w fox | grep -vw tiger 
+0

+1,尽管UUOC。 :-) – ruakh 2012-03-15 14:29:03

+0

它不依赖于Linux,而是依赖于grep,它可用于许多平台,甚至windows。 – 2012-03-15 20:18:04

2

您可以使用提前负的外观和负面的外观背后检测不受欢迎的词汇出现。

例如为:(?<!(tiger.*))(fox)(?!(.*tiger))

注:这种方法并非所有语言的支持。 查看兼容性列表here

+0

您可以在每个lookaround断言中删除一个'。*'。这只会与.NET和JGSoft正则表达式引擎一起工作。 – 2012-03-15 16:32:23

+0

@TimPietzcker谢谢,我已经更新了答案。 – 2012-03-15 17:24:58

相关问题