我怎么能Regex.Replace

时间:2011-10-11 14:20:17

标签: c# .net regex

如何使用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的第一个实例(区分大小写)

1 个答案:

答案 0 :(得分:1)

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

由于它们不相同,因此仅替换第一次出现的“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”不是一个完整的单词,而是一个单词的一部分。