【问题标题】:Empty replacement result, when regex doesnt match空替换结果,当正则表达式不匹配时
【发布时间】:2010-02-05 13:23:04
【问题描述】:
Regex.Replace("some big text", "^.+(big).+$", "$1"); // "big"
Regex.Replace("some small text", "^.+(big).+$", "$1"); // "some small text", but i need here empty string

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

【问题讨论】:

    标签: .net regex


    【解决方案1】:

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

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

    它不会尝试匹配包罗万象的正则表达式,除非第一部分按该顺序写出失败。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我知道这一点,但我不能使用 Regex.Match 方法。我只能使用替换。我正在使用 Yahoo Pipes,并且只有 replce 函数用于选择值。我之前无法添加匹配方法。
      猜你喜欢
      • 1970-01-01
      • 2016-11-10
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多