我在替换特定字符后遇到问题。例如,我想用此代码将第一个“ 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] 删除。
我来说两句