繁体   English   中英

C#正则表达式在模式中重复数字组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM