如何指定不匹配的模式

时间:2010-07-08 22:48:45

标签: c# regex

假设输入=“你好”,模式是“世界” 我想确定输入中不会出现thr模式。 由于输入Regex.IsMatch中不会出现模式,因此应返回true。

如何在C#中编写模式

2 个答案:

答案 0 :(得分:2)

您可以使用zero-width, negative lookahead assertion

Regex.IsMatch("Hello", "(?!World)") // Returns true

但是我只是在你只做那种情况时才提供这些信息(当你可以否定IsMatch结果时),而是想要在一个更合情合理的地方有一个消极的主张。

答案 1 :(得分:1)

通常,您不使用正则表达式来检查某个子字符串是否不存在。

虽然在某些(正则表达式实现)中可能使用零宽度负面外观(see this answer),但并不一定每个输入都可以。当您希望通过断言在匹配之前/之后/之内不存在某些子类时,主要使用否定前瞻/后方断言,以避免正则表达式中的指数匹配失败。它们(更常见地)在搜索不能在其他模式之前或之后的匹配时使用。

相反,只需检查输入中是否存在模式,然后返回Regex.IsMatch的否定:

var input = "Hello";
var regEx = new Regex("World");
return !regEx.IsMatch(input);