我正在嘗試構建一個解析器,該解析器將替換字符串的特定實例。因此,例如,我有一個字符串sn+sn+sn*9,并且我只想替換snregex的第三個實例?我試過了var expression = "sn+sn+sn*9";var regex = new Regex("sn");expression = regex.Replace("sn",4.ToString());//expression = regex.Replace("sn",4.ToString(),1,2);提前致謝
3 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
int x = 0; string repl = "ANYTHING"; string s = Regex.Replace("sn+sn+sn*9", "sn", m => (++x) == 3 ? repl : m.Value);
解釋
該x
變量用于跟蹤搜索文本的出現。Regex一旦發現第三次出現,MatchEvaluator委托就會將該字符串替換為repl
變量中的任何內容。否則,它僅返回找到的相同字符串。

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
這是一個使用以下正則表達式模式的選項:
(?<=.*?\bsn\b.*?\bsn\b.*?)\bsn\b
sn當我們之前已經sn在字符串中看到兩個術語時,該模式從字面上說是將替換為一個術語。blah盡管您可以使用任何所需的值,但我在下面的示例代碼中使用了替換項。
var term = @"sn";
var replacement = "blah";
var expression = term + "+" + term + "+" + term + "*9";
var pattern = @"(?<=.*?\b" + term + @"\b.*?\b" + term + @"\b.*?)\b" + term + @"\b";
var exp_trim = Regex.Replace(expression, @pattern, replacement);
Console.WriteLine(exp_trim);
sn+sn+blah*9
演示版
- 3 回答
- 0 關注
- 227 瀏覽
添加回答
舉報
0/150
提交
取消