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