如何仅使用.Net Regex.Replace替换第一个匹配项

时间:2015-03-09 09:05:40

标签: .net regex

Regex.Replace("a b c a b c", "a", "*")

返回

"* b c * b c"

是否有一种简单的方法可以只替换第一次出现,结果是

"* b c a b c"

找不到限制替换的RegExOption。特别是

Regex.Replace("a b c a b c", "a", "*", RegexOptions.Multiline)
Regex.Replace("a b c a b c", "a", "*", RegexOptions.Singleline)

没有任何区别 - 显然。但是没有更多的选择。

2 个答案:

答案 0 :(得分:5)

使用appropriate overload

Regex rgx = new Regex("a");
string result = rgx.Replace("a b c a b c", "*", 1); // * b c a b c

答案 1 :(得分:1)

使用捕获组和起始锚点。

Regex.Replace("a b c a b c", "^([^a]*)a", "$1*")

DEMO

^([^a]*)捕获第一个a之前存在的所有字符。以上正则表达式中的以下a仅匹配第一个a。因此,通过将匹配的字符替换为组索引中存在的字符1加*将为您提供所需的输出。