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

Feb*_*J S 2 c# regex

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

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

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

但它总是回归真实.

我已经尝试过"钢笔和铅笔"这个词和"钢笔铅笔",但两者都回归真实.任何人都可以帮助提供正确的正则表达式吗?

Tor*_*ton 8

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

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

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

那应该做的.

我强烈推荐The Regex Coach来帮助你构建正则表达式.

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

编辑: 我觉得我应该指出你甚至不需要对象实例.

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

你可以使用静态方法.

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

"\band\b|\bnot\b"
Run Code Online (Sandbox Code Playgroud)

另一个非常好的点stema:

"\b(and|not)\b"
Run Code Online (Sandbox Code Playgroud)