亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用正則表達式替換字符串中項目的特定實例

用正則表達式替換字符串中項目的特定實例

C#
DIEA 2021-05-11 17:14:45
我正在嘗試構建一個解析器,該解析器將替換字符串的特定實例。因此,例如,我有一個字符串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變量中的任何內容。否則,它僅返回找到的相同字符串。


查看完整回答
反對 回復 2021-05-29
?
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

演示版



查看完整回答
反對 回復 2021-05-29
  • 3 回答
  • 0 關注
  • 227 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號