我怎么能Regex.Replace

本文关键字:Replace Regex 怎么能 | 更新日期: 2023-09-27 18:10:52

如何使用正则表达式?更换实现流动:给定输入字符串:

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

我怎么能Regex.Replace

您的输入包含"DV_DHW"answers"DV_DWH"。它们不是同一根弦。注意,第一个音是D-H-W,其中"H"在"W"之前,第二个音是"W"在"H"之前。"

因为它们不相同,所以只有第一次出现的"DV_DHW"被替换。正确的输出是:

Test_DV_DHW dv_DWH dv_DWH dv_DWH some more text 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"不是一个完整的单词,而是一个单词的一部分。