c#中只替换部分匹配的正则表达式

本文关键字:正则表达式 替换部 | 更新日期: 2023-09-27 18:06:01

假设我有以下代码:

string input = "hello everyone, hullo anything";
string pattern = "h.llo [A-z]+";
string output = Regex.Replace(input,pattern,"world");

(我已尽力使它尽可能简单)

上面的代码输出是"world, world",而我真正想要的是一种将h.llo之后的所有单词更改为world的方法,我想要输出为"hello world, hullo world"

我一直在寻找一种方法来做到这一点,我搜索了很多,并阅读了这篇文章:

仅将部分组替换为Regex

但是我没有从中得到很多,我不确定这就是我想要的。

有什么方法吗?

c#中只替换部分匹配的正则表达式

把你的代码改成,

string input = "hello everyone, hullo anything";
string pattern = "(h.llo )[A-Za-z]+";
string output = Regex.Replace(input,pattern,"$1world");

[A-z]不仅可以匹配A-Z, a-z,还可以匹配其他一些额外的字符。

string pattern = "(?<=h.llo )[A-Za-z]+";
string output = Regex.Replace(input,pattern,"world");

(?<=h.llo )正向后看断言,断言匹配前必须有h, any char, llo,空格。断言不会匹配任何单个字符,而是断言是否可能匹配。

演示