【问题标题】:Regex replace consecutive non-alpha chars with single char正则表达式用单个字符替换连续的非 alpha 字符
【发布时间】:2009-03-10 15:50:49
【问题描述】:

我想用加号“+”替换字符串中的所有非字母字符,但要确保一组多个非字母字符只被一个加号替换。

我曾认为以下方法可能有效,但显然不行:

System.Text.RegularExpressions.Regex.Replace(name, @"[^\w]*?", "+")

【问题讨论】:

    标签: .net regex


    【解决方案1】:

    试试 System.Text.RegularExpressions.Regex.Replace(name, @"\W+", "+")

    为此:“sasa-==[]&^asdsa2435”匹配 -==[]&^

    【讨论】:

    • 一个小警告:使用 \W 将从匹配中排除字母、数字 下划线。如果您只想排除字母,请改用 [^A-Za-z],或使用 [^0-9A-Za-z] 排除字母数字(但包括下划线)。
    【解决方案2】:

    你不应该禁用贪婪,你想要 1 或更多,而不是 0 或更多。代替 ”*?”用“+”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多