[英]Finding and replacing multiple matches in a single line with regex
我有一个关于使用正则表达式在字符串内进行多次替换的查询。
该平台是C#,因此.NET的System.Text.RegularExpression实现。
假设我有一个字符串-在这种情况下,是一个XML片段,但是它根本可以是任何文本,因此无需对语法做任何假设:
<key val1="C:\SomeDir\SomePath\FOLDER1" val2="C:\SomeDir\SomePath\FOLDER2" />
我要替换这两个路径的最后一部分-假设将其更改为FOLDER3
。
我目前有一个表达式(C:\\\\SomeDir\\\\SomePath)(\\\\\\w*\\\\)
,它给了我两组-路径的第一部分和我要替换的位。
我可以使用替换字符串${1}\\FOLDER3\\
正确替换我要更改的路径部分。
但是:这仅适用于字符串中的第一个匹配项。 因此, FOLDER1
将替换为FOLDER3
但FOLDER2
保持不变。
我以为我可以在循环中应用match / replace操作,直到该行不再更改为止,但这当然不起作用,因为match regex总是在第一个匹配项上停止。
任何帮助,不胜感激!
使用正则表达式的替换方法。 replace方法会替换所有匹配项:
string s = "<key val1=\"C:\\SomeDir\\SomePath\\FOLDER1\" val2=\"C:\\SomeDir\\SomePath\\FOLDER2\" />";
Regex regex = new Regex(@"(C:\\SomeDir\\SomePath)(\\\w*)");
string result = regex.Replace(s, x => x.Groups[1] + @"\FOLDER3");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.