[英]C# regex repeating group of the digit in pattern
我用正则表达式模式
pattern = "ID\\d+.*?ID\\d+";
input="ID1...sometxt1...ID1...sometxt2...ID3...sometxt3...ID50"
input=Regex.Replace(input, pattern, "");
Console.WriteLine(input);
输出将=“ ... sometxt2 ...”
但我需要输出
... ... sometxt2 ID3 ... sometxt3 ... ID50,
我需要该正则表达式在ID后找到具有相同位数的组。 ID3!= ID50,必须保留此组,ID1 == ID1-必须替换此组
谢谢!
如果您需要替换ID
后面带有相同数字的整个子字符串,则需要使用具有反向引用的捕获组:
var pattern = @"\bID(\d+).*?\bID\1\b";
说明:
\\bID
整个单词“ ID” (\\d+)
-组1中捕获的一个或多个数字 .*?
-除换行符外的任何字符,请尽可能少地保留到最接近的字符 \\bID
整个单词“ ID”后跟...。 \\1
向后引用第1组中的匹配数字 \\b
后跟一个单词边界(如果第1
组中有1
10
则我们不匹配10
个)。 请注意,如果输入字符串中包含换行符,则需要RegexOptions.Singleline
修饰符。
另外,不要忘记将替换结果分配给变量:
var res = Regex.Replace(input, pattern, string.Empty);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.