【问题标题】:Text Find replace using Wildcard or regex使用通配符或正则表达式查找替换文本
【发布时间】:2014-04-23 19:29:09
【问题描述】:

我正在尝试使用正则表达式替换一些文本(使用 Visual Studio) 比如

我必须将 Canada 123 567-890 替换为 Canada 123-567-890 我的意思是在 123 之后的空白处添加一个-

使用通配符查找替换,我尝试:

Find: Canada ****567-890
Replace: Canada 123-567-890

这很好用。但是我该如何概括它呢?例如,我怎样才能为任何数字而不是 123 做到这一点(见下文)

Canada 454 767-785
Canada 899 567-788
Canada 345 345-645
Canada 788 456-766

谢谢。

【问题讨论】:

    标签: regex visual-studio text wildcard


    【解决方案1】:

    您可以使用以下内容。

    Find: ^(Canada\s+\d{3})\s
    Replace: \1-
    

    【讨论】:

      【解决方案2】:

      你可以使用

      (^Canada\s+\d\d\d)\s(.*)
      

      然后替换为:

      \1-\2
      

      See it work

      另一种方法是使用正向前瞻,以便您可以正确处理重叠匹配:

      (\d\d\d)\s(?=\d\d\d) 
      

      那么替换就是

      \1-
      

      See that work

      【讨论】:

        【解决方案3】:
        "Canada\ [0-9][0-9][0-9]\ [0-9][0-9][0-9]\-[0-9][0-9][0-9]"
        

        "Canada\ [0-9]{3}\ [0-9]{3}\-[0-9]{3}"
        

        这样的东西应该可以解析或返回字符串。您必须将第一个空格替换为 - 字符。

        从输入流中找到文本后,您可以使用 技术含量低的方法。您正在尝试使用正则表达式替换变得复杂的第二个空格。

        int lastIndexPos = foundStr.LastIndexOf(' ');
        Result = FoundStr.Substring(0,lastIndexPos) + "-" + FoundStr.Substring(lastIndexPos+1);
        

        像这样的低技术应该可以工作。

        【讨论】:

        • 找到的作品(意思是“加拿大\ [0-9][0-9][0-9]\ [0-9][0-9][0-9]\-[ 0-9][0-9][0-9]") 但是 GENERAL Replace 表达式应该是什么?
        • @SebThomas 稍微扩展了我的答案
        • 找到它,但没有给出一般的 REPLACE 表达式,其他答案已经完成了。
        • 我不是为了让别人眼花缭乱。只需获得一个可行的解决方案。这个问题的提出者可以从所有答案中愉快地挑选他们需要的东西。通常,一个聪明的解决方案是在六个月后当您忘记自己在做什么或者最糟糕的是您接管了别人的代码时打补丁会很痛苦。 @ClickRick 我没有看到你的答案!
        • 我不知道你们为什么要把事情搞得这么复杂。请看我的回答。
        【解决方案4】:

        使用记事本++

        查找:'加拿大 (\d+)'

        替换:'加拿大$1-' (不需要单引号)

        就是这样!

        【讨论】:

        • 问题说您使用的是 Visual Studio。它还谈到想要一个更通用的解决方案。在此基础上,我会说 hwnd 和 dawg 的答案最好。
        【解决方案5】:

        我对 VS 不熟悉,但它的正则表达式通常是 /^(\w+) (\d+) (\d+-\d+)$/g

        Javascript 示例:

        'Canada 123 567-890'.replace(/^(\w+) (\d+) (\d+-\d+)$/g, '$1 $2-$3');
        "Canada 123-567-890"
        

        认为在 VS 中你必须将 $1 $2-$3 更改为 \1 \2-\3

        【讨论】:

          猜你喜欢
          • 2012-09-10
          • 2018-09-05
          • 2014-10-26
          • 1970-01-01
          • 1970-01-01
          • 2014-05-19
          • 1970-01-01
          • 2022-11-04
          • 2010-12-02
          相关资源
          最近更新 更多