【问题标题】:How can I Regex.Replace我怎样才能正则表达式。替换
【发布时间】:2011-12-05 08:48:02
【问题描述】:

如何使用 Regex.Replace 来实现流动: 给定输入字符串:

"DV_DHW dv_DWH dv_dwh Dv_Dwh some more text dv_dwhtest"

我想改成:

"Test_DV_DHW Test_DV_DHW Test_DV_DHW Test_DV_DHW  some more text dv_dwhtest"

我试过了:

Regex.Replace("Test_DV_DHW Test_DV_DHW Test_DV_DHW Test_DV_DHW  some more text dv_dwhtest", "DV_DHW", "Test_DV_DHW", RegexOptions.IgnoreCase);

但它只替换了 DV_DHW 的第一个实例(区分大小写)

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    您的输入包含“DV_DHW”和“DV_DWH”。那些不是同一个字符串。请注意,第一个是 D-H-W,其中“H”在“W”之前,第二个是“W”在“H”之前。

    由于它们不相同,只有第一次出现的“DV_DHW”被替换。正确的输出是:

    Test_DV_DHW dv_DWH dv_dwh Dv_Dwh 更多文本 dv_dwhtest

    如果您打算替换两个字符串,请期待最后一个,因为它不是一个完整的单词,您可以使用以下模式:@"\bDV_D(?:HW|WH)\b"

    \b 元字符匹配单词边界,然后该模式将 (?:...) 用于匹配“HW”或“WH”文本的非捕获组。

    上面的模式会产生这个输出:

    Test_DV_DHW Test_DV_DHW Test_DV_DHW Test_DV_DHW 更多文字 dv_dwhtest

    请注意,最后一个单词“dv_dwhtest”没有被修改,因为“dv_dwh”不是一个完整的单词,而是一个单词的一部分。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多