我正在尝试构建一个解析器,该解析器将替换字符串的特定实例。因此,例如,我有一个字符串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 关注
- 201 浏览
添加回答
举报
0/150
提交
取消