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