繁体   English   中英

使用正则表达式查找并替换一行中的多个匹配项

[英]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将替换为FOLDER3FOLDER2保持不变。

我以为我可以在循环中应用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.

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