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
但是我没有从中得到很多,我不确定这就是我想要的。
有什么方法吗?
把你的代码改成,
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
,空格。断言不会匹配任何单个字符,而是断言是否可能匹配。