正则表达式检查“和,或,不,而不是”一词?

时间:2011-07-18 08:47:36

标签: c# regex

我有一个seneario,我必须检查一个单词包含“和,或,不,而不是”,但我创建的正则表达式失败。任何机构都可以为我提供正确的正则表达式吗?

我创建的正则表达式就像这样

  Regex objAlphaPattern = new Regex(@"^[not|and not|and|not]");
  if(objAlphaPattern.IsMatch(searchTerm))
  {
   //// code
  }

但它总是返回真实。

我尝试过“钢笔和铅笔”这个词和“钢笔铅笔”,但两者都回归真实。有人可以帮助提供正确的正则表达式吗?

3 个答案:

答案 0 :(得分:8)

你是从一个开始锚开始的。如果你不想只检查它是否发生在字符串的开头那么你就不应该有^。

此外,当您使用()时,您正在使用[]。实际上在这种情况下你甚至不需要()。 []表示字符类。你只是不需要那个。

Regex objAlphaPattern = new Regex("\b(and|not)\b");
if(objAlphaPattern.IsMatch(searchTerm))
{
//// code
}

那应该做的。

我强烈建议The Regex Coach帮助您构建正则表达式。

我还强烈推荐http://www.regular-expressions.info/作为参考。

修改 我觉得我应该指出你甚至不需要对象实例。

if(System.Text.RegularExpressions.Regex.IsMatch(searchTerm, "\b(and|not)\b"))
{
//// code
}

您可以使用静态方法。

这是一个非常好的点蒂姆:

"\band\b|\bnot\b"

另一个非常好的点stema:

"\b(and|not)\b"

答案 1 :(得分:1)

尝试

(not)|(and not)|(and)

代替

答案 2 :(得分:1)

您的正则表达式错误,应为(and|not)。也不需要检查and not,因为它将在第一次和。

时失败

您可以使用在线工具检查正则表达式;例如http://regexpal.com/?flags=&regex=(and|not)&input=Pen%20and%20Pencil