【问题标题】:Regex that does not match specific words [duplicate]与特定单词不匹配的正则表达式[重复]
【发布时间】:2014-06-01 04:32:04
【问题描述】:

1) 使用 c# 正则表达式

我目前有以下正则表达式

^(abc|def)$

如果单词是“abc”或“def”,则返回true 我需要的是让它匹配除了这两个词之外的任何东西,包括包含这些词的字符串。 我现在是这样做的

Regex rgx = new Regex("^(abc|def)$");

if(!rgx.IsMatch(somestring)){
// do stuff
}

我想要的是一个不需要使用 ! 运算符的正则表达式。所以我需要类似的东西(请参阅新正则表达式中的 ! 运算符,但它不起作用。)

Regex rgx = new Regex("^(!(abc|def))$");

if(rgx.IsMatch(somestring)){
// do stuff
}

一些字符串的预期结果

废话-->是的

abc blah --> 是的

abc --> 错误

def --> 错误

blah def --> 是的

希望这是有道理的。在此先感谢。

为了澄清,我不是想在字符串中找到单词,我想将整个字符串与正则表达式进行比较......因此 ^()$

至于为什么不直接使用 !rgx.IsMatch,我们只是说我只是想看看它是否可以使用正则表达式

【问题讨论】:

  • 不是重复的,请阅读问题...我正在寻找整个单词匹配而不是字符串中包含的匹配
  • 如果您不想使用正则表达式在字符串中查找单词,为什么要使用正则表达式? string.Contains 和简单的条件不起作用吗?
  • “为什么”在这里并不重要。我想看看有没有可能。

标签: c# regex regex-negation


【解决方案1】:

您可以使用此正则表达式。它会检查开始标记 ^ 后面没有 abcdef 直到结束 $

^(?!(abc|def)$).*

【讨论】:

  • 泰。我实际上是在尝试没有 .* 的 "^(?!(abc|def)$)" ... 正则表达式很奇怪哈哈。 tnx 再次
  • 多么漂亮的正则表达式:)
猜你喜欢
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2013-06-10
  • 2018-01-02
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多