C# 使用正则表达式替换字符串中的单个字符

C# 使用正则表达式替换字符串中的单个字符,c#,regex,C#,Regex,我试图用C#替换大字符串(文本文件)中的单个字符。 此字符串包含多行代码 在某些情况下,批处理文件称为分配多个参数: call c:\script.bat 1 1 16 localhost 1 1 %0% 它必须成为: call c:\script.bat 2 1 16 localhost 1 1 %0% 我创建了以下语句来替换regexdot组(在本例中是第一个): 不知何故,我可以肯定,替换替换匹配项的编号1不能替换为2,因为这样替换字符串将访问不存在的组12,而不是group1

我试图用C#替换大字符串(文本文件)中的单个字符。 此字符串包含多行代码

在某些情况下,批处理文件称为分配多个参数:

  call c:\script.bat 1 1 16 localhost 1 1 %0%
它必须成为:

  call c:\script.bat 2 1 16 localhost 1 1 %0%
我创建了以下语句来替换
regex
dot组(在本例中是第一个):

不知何故,我可以肯定,替换替换匹配项的
编号1
不能替换为
2
,因为这样替换字符串将访问不存在的组
12
,而不是
group1
,并附加字符
2


有人能给我一个线索吗?

简单的解决办法是不捕获定界空间:

Regex.Replace(content, @"(call c:\script.bat) \d (1 16 localhost 1 )(.)(%0%)","$1 2 $3$4$5")

注意:我还使用了
\d
数字字符集。对于大于一位数的数字,您可能需要将其更改为
\d+

为什么必须使用Regex?如果
.Replace(“1 1 16”,“2 1 16”)
就足够了,那就太过分了。在我正在处理的一个大文件中,我必须是舒尔,在调用此特定批处理文件的地方,只能调整字符串
Regex.Replace(content, @"(call c:\script.bat) \d (1 16 localhost 1 )(.)(%0%)","$1 2 $3$4$5")