模式中数字的C#regex重复组
我使用正则表达式模式模式中数字的C#regex重复组,c#,regex,C#,Regex,我使用正则表达式模式 pattern = "ID\\d+.*?ID\\d+"; input="ID1...sometxt1...ID1...sometxt2...ID3...sometxt3...ID50" input=Regex.Replace(input, pattern, ""); Console.WriteLine(input); 输出将=“…sometxt2…” 但我需要输出 …某物2…ID3…某物3…ID50 我需要正则表达式查找ID.ID3!=ID
pattern = "ID\\d+.*?ID\\d+";
input="ID1...sometxt1...ID1...sometxt2...ID3...sometxt3...ID50"
input=Regex.Replace(input, pattern, "");
Console.WriteLine(input);
输出将=“…sometxt2…”但我需要输出
…某物2…ID3…某物3…ID50 我需要正则表达式查找ID.ID3!=ID50,此组必须保留,ID1==ID1-必须替换此组
谢谢! 如果需要替换
ID
中后面有相同数字的整个子字符串,则需要使用带有反向引用的捕获组:
var pattern = @"\bID(\d+).*?\bID\1\b";
见
说明:
-一个完整的单词“ID”\bID
-组1中捕获的一个或多个数字(\d+)
-除换行符以外的任何字符,尽可能少到最接近的字符*?
-整个单词“ID”后跟\bID
-反向引用组1中匹配的数字\1
-后跟一个单词边界(因此,如果第1组中有\b
,则我们不匹配1
)10
RegexOptions.Singleline
修饰符
此外,不要忘记将替换结果指定给变量:
var res = Regex.Replace(input, pattern, string.Empty);
也许可以使用
pattern=@“\bID(\d+).*?\bID\1\b”
和var res=Regex.Replace(输入,pattern,”)代码>谢谢!反向引用是个好主意。。。