首页 > 解决方案 > 正则表达式|如果字符串包含某些单词,则忽略字符串的第二个单词

问题描述

/((?:(?:is|will) (?!is))[^<?]+)/i

测试语句:

我不希望它与第一句话匹配,我希望它与第二句话匹配。(它确实如此)

我正在尝试学习如果“is|will”之后的单词是“is”,我如何将整个正则表达式返回为假,但它会一直匹配并最终在第一个示例中找到匹配项。我对正则表达式有点陌生,因此感谢所有帮助。

这是比赛的样子:

比赛是什么样的

提前致谢

标签: c#regex

解决方案


您的表达式看起来不错,但您需要锚定它,以便它从文本的开头开始匹配。您可以^在正则表达式的开头使用。

/^((?:(?:is|will) (?!is))[^<?]+)/i

如果没有锚,正则表达式引擎会尝试在字符串中的任何位置找到匹配项。在第一个句子的情况下,它可以匹配这个词is作为表达式中的第一个词,然后匹配表达式的其余部分。


推荐阅读