2010-07-08 72 views
1

假設input =「Hello」並且模式爲「World」 我想確定輸入中不會發生thr模式。 由於模式不會在輸入中出現Regex.IsMatch應該返回true。如何指定不應該匹配的模式

我怎麼能寫模式在C#

回答

1

通常不使用正則表達式來查看某個字符串是否不存在。

儘管在一些(正則表達式實現)中可能使用零寬度負向查找(see this answer),但對於每個輸入都不一定可能。當您希望通過斷言在匹配之前/之後/之內不存在某些子分類時避免正則表達式中的指數匹配失敗時,主要使用負向前瞻/後置斷言。它們也(更常用)用於搜索不能在其他模式之前或之後進行的匹配。

相反,只是檢查模式在輸入存在,然後返回Regex.IsMatch的否定:

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

事情是模式來自配置文件,我想運行相同的匹配任何一種方式 – 2010-07-08 23:14:00

2

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

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

但我只在沒有的情況下爲你提供這些信息只是做,而且只有這樣(當你只能否定IsMatch的結果),而不是想要在更森的某個地方有否定斷言聖地。