.NET 中的正则表达式替换大小写

本文关键字:替换 大小写 正则表达式 NET | 更新日期: 2023-09-27 18:34:25

如果数字长度为 15 或 16,我正在尝试将 <number></number> 元素中的所有数字替换为xxx

例如<number>1234567812345678</number> -> <number>xxx</number>

我做了下面这样的事情,但它替换了数字,即使它们的长度大于 16。如何预防这种情况?

string test = "<number>1234567812345678</number><number>12345671234567</number><number>1234567123456712345678</number>";
test = Regex.Replace(test, @"(['d]{15,16})", "xxx"); 

不需要的输出

<number>xxx</number><number>12345671234567</number><number>xxx345678</number>

想要的输出

 <number>xxx</number><number>12345671234567</number><number>1234567123456712345678</number>

.NET 中的正则表达式替换大小写

string test = "<number>1234567812345678</number><number>12345671234567</number><number>1234567123456712345678</number>";
test = Regex.Replace(test, @"(?<=>)'d{15,16}(?=<)", "xxx");

这确保了数字前面有一个>,后面是一个<,使用lookaround。

您没有指定数字前面应有 <number>,后跟 </number> 。你可以这样做:

test = Regex.Replace(test, @"(?<=<number>)(['d]{15,16})(?=</number>)", "xxx"); 

默认情况下,正则表达式将替换子字符串,除非您告诉它字符串应该如何结束。 您需要用匹配器将 [''d]{15,16} 与标签括起来,如下所示:

Regex.Replace(test, @"<number>['d]{15,16}</number>", @"<number>xxx</number>");