【问题标题】:find string if text not contain specific word如果文本不包含特定单词,则查找字符串
【发布时间】:2012-03-16 01:24:20
【问题描述】:

如果特定单词不存在,我需要使用正则表达式来查找匹配项

示例 如果文本中不存在老虎,则查找狐狸

所以正则表达式应该匹配 fox in

"fox is an animal"

不匹配

"both fox and tiger are animals"

需要一个正则表达式

【问题讨论】:

  • 您确定需要一个正则表达式来执行此操作吗?如果第一个匹配而另一个不匹配,为什么不使用两个正则表达式并接受字符串?
  • 首先——什么语言?其次——为什么你需要在一个正则表达式中做到这一点?当然,按照if(! string.contains('tiger')) { match = string.find('fox') } 的方式写一些东西更有意义?
  • 你必须使用正则表达式吗这似乎更容易使用contains 方法(或任何语言的等效方法),即在java中:if(!string.contains("tiger")) { //Do something}

标签: regex


【解决方案1】:

linux 你可以这样做:

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

【讨论】:

  • 它不依赖于Linux,而是依赖于grep,它适用于许多平台,甚至是windows。
【解决方案2】:

您可以使用否定前瞻和否定后瞻来检测是否存在不需要的字词。

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

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

【讨论】:

  • 您可以在每个环视断言中删除一个.*。这仅适用于 .NET 和 JGSoft 正则表达式引擎。
猜你喜欢
  • 2022-08-02
  • 1970-01-01
  • 2016-12-06
  • 2014-06-04
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
相关资源
最近更新 更多