正则表达式检查单词中是否"and,or,not,and not"?



我有一个场景,我必须检查一个单词包含"和,或,不,而不是",但我创建的正则表达式失败。有人能为我提供正确的正则表达式吗?

我创建的正则表达式是这样的

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

但是它总是返回true。

我试过"钢笔和铅笔"one_answers"钢笔铅笔",但两者都返回true..有人能帮忙提供正确的正则表达式吗?

从begin锚开始。如果你不想只检查它是否发生在字符串的开头,那么你就不应该使用^.

同样,当你应该使用()时,你使用了[]。实际上,在这种情况下,您甚至不需要()。[]表示字符类。你根本不需要。

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

应该可以了。

我强烈推荐The Regex Coach来帮助你构建Regex。

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

编辑:

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

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

你可以直接使用static方法。

说得很好

"bandb|bnotb"

另一个非常好的观点:

"b(and|not)b"

try

(not)|(and not)|(and)
相反,

你的正则表达式是错误的,应该是(and|not)。也不需要检查and not,因为它将在第一次和第二次执行时失败

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

相关内容

  • 没有找到相关文章

最新更新