Skip to main content
 首页 » 编程设计

c#之正则表达式用静态词替换找到的匹配项

2024年01月29日20sky-heaven

我的输入是:

Foo 12; 
Foo 5534; 
Foo 1; 

我要更换

Foo (\d+?); 到 Foo NUM;

结果是:

Foo NUM; 
Foo NUM; 
Foo NUM; 

我的模式是:

Regex.Replace(line, "Foo (\d+?);", "NUM"); 

但这似乎行不通。哪里出了问题?

请您参考如下方法:

在您的代码中,您正在匹配 Foo (\d+?); 并将匹配替换为 NUM,这将是文字结果。但是你想要保留在替换中的不是数字而是 FOO

您可以使用 Foo 的捕获组并在替换中使用该捕获组来进行替换。

Regex.Replace(line, @"(Foo) \d+;", "$1 NUM;") 

您可以使用问号省略使 \d+ 非贪婪。

Regex demo | C# demo