【问题标题】:Replace multi minus to one minus by regex用正则表达式将多减号替换为一号减号
【发布时间】:2014-06-23 12:20:47
【问题描述】:

有一个字符串

str = "test--removing-----minus-";

尝试替换为

str = Regex.Replace(str, @"\-*", @"-");

但我明白了

"t-e-s-t--r-e-m-o-v-i-n-g--m-i-n-u-s-";

【问题讨论】:

  • 我很难相信您的输出中添加了一封信 b
  • 复制粘贴错误。谢谢。固定的! :)

标签: c# regex replace


【解决方案1】:

* 匹配 0 或更多 匹配先前模式。使用{2,} 匹配2 or more 匹配。

并且- 不需要转义。

str = Regex.Replace(str, @"-{2,}", @"-");

【讨论】:

  • 我的第一个想法是只说“一个或多个”会更简洁,但后来我意识到这可能会使正则表达式变为 "-+"... 也不需要 @在字符串之前。
【解决方案2】:

问题在于* 匹配 个或更多字符,这意味着它匹配字母之间。

将其更改为+,表示一个或更多。

【讨论】:

    【解决方案3】:

    你的代码是,

    str = Regex.Replace(str, @"\-+", @"-");
    

    str = Regex.Replace(str, @"\-{1,}", @"-");
    

    * 使正则表达式变得贪婪,它代表零次或多次。所以它将- 的出现次数设为零。使用{1,} 匹配一个或多个出现的字符-

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2017-01-05
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多