当正则表达式不匹配时,清空替换结果

时间:2010-02-05 13:23:04

标签: .net regex

Regex.Replace("some big text", "^.+(big).+$", "$1"); // "big"
Regex.Replace("some small text", "^.+(big).+$", "$1"); // "some small text", but i need here empty string

我需要从字符串中选择一个值。没关系,当字符串与模式匹配时。但是当字符串不匹配时,替换结果中会有一个原始字符串。我需要一个空字符串,当字符串与模式不匹配时(仅使用替换)。

2 个答案:

答案 0 :(得分:1)

虽然正确的方法是使用match函数,但如果原始匹配失败,可以通过允许它匹配任意字符串来伪造它:

Regex.Replace("some big text", "^.+(big).+$|^(.*)$", "$1$2"); // "big"
Regex.Replace("some small text", "^.+(big).+$|^(.*)$", "$1$2");

除非按顺序写出第一部分失败,否则它不会尝试匹配catch-all正则表达式。

答案 1 :(得分:0)

使用Regex.Match方法。这样您就可以先检查值是否匹配。如果是这样,您可以进行替换。否则,您只需返回一个String.Empty。

有关Regex.Match的更多信息,请访问:http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx