C#正则表达式否定提前

麦克斯87

我在替换特定字符后遇到问题。例如,我想用此代码将第一个“ aa”替换为“ 33”。

 string str = "dc1aaaafg";
 string pattern = @"a{2}(?!(1))";
 Regex rgx = new Regex(pattern);
 string result = rgx.Replace(str, "33");

但结果是“ dc13333fg”。它取代了“ 1”之后的第二组。我只需要替换第一组,例如“ dc133aafg”。我怎么能做到这一点。我有一个很大的字符串,可以替换很多,这只是示例。

托玛拉克

Regex.Replace()是全球性的 它将替换与模式匹配*的次数

您可以Regex.Replace(String, String, Int32)用来限制操作数量。

string result = rgx.Replace(str, "33", 1);

或者,您将模式更改为后向。

Regex rgx = new Regex(@"(?<=1)a{2}");
string result = rgx.Replace(str, "33");

*请注意,这Replace()全局的,但不是增量的使用表达a{2}"aaaaaa"与替换"ba"将导致"bababa",而不是在"bbbbba"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章