簡體   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