簡體   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