.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>
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>");