如何使用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的第一个实例(区分大小写)
答案 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”不是一个完整的单词,而是一个单词的一部分。