假设输入=“你好”,模式是“世界” 我想确定输入中不会出现thr模式。 由于输入Regex.IsMatch中不会出现模式,因此应返回true。
如何在C#中编写模式
答案 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);