C# 正则表达式匹配两个或多个字符,并将每个字符替换为X

C# 正则表达式匹配两个或多个字符,并将每个字符替换为X,c#,regex,C#,Regex,我想将两个或更多字符的任意组合[fli]更改为x。单独的f、l或i应保持不变,但任何组合都应更换 换句话说:匹配模式[fli]{2,},并将其替换为x(与匹配长度相同) 示例输入1: office/offices/muffled/stiffly/shuffled/different/difficult/office/officers no change: igloo/visiting/unwieldly 样本输入2: oflice/oflices/muflled/stiflly/shuflle

我想将两个或更多字符的任意组合
[fli]
更改为
x
。单独的
f
l
i
应保持不变,但任何组合都应更换

换句话说:匹配模式
[fli]{2,}
,并将其替换为
x
(与匹配长度相同)

示例输入1:

office/offices/muffled/stiffly/shuffled/different/difficult/office/officers no change: igloo/visiting/unwieldly
样本输入2:

oflice/oflices/muflled/stiflly/shuflled/diflerent/diflicult/ofiice/oflicers no change: igloo/visiting/unwieldly
样本输出(1和2相同):


我使用的是C#,但我更愿意让它作为一个普通的正则表达式工作。

通过使用“向前看”和“向后看”找到了一个解决方案

string output = Regex.Replace(input, "([fli](?=[fli])|(?<=[fli])[fli])", "x");
string output=Regex.Replace(输入,”([fli](?=[fli])|)(?如果您需要,您将发现。尤其是重载

上述屠宰和生产的产品符合预期

Now xxxp, xxop and xxy,
I don't care xx I die,
Now xxxp, xxop and xxy,
I don't care xx I die.
Don't ever leave me,
Don't ever say goodbye.

不知道为什么这会被否决?
string source      = @"
  Now flip, flop and fly,
  I don't care if I die,
  Now flip, flop and fly,
  I don't care if I die.
  Don't ever leave me,
  Don't ever say goodbye.
  " ;
Regex  rx          = new Regex( @"[fli]{2,}" ) ;
string replacement = rx.Replace(source, m => new string('x',m.Length)) ;
Now xxxp, xxop and xxy,
I don't care xx I die,
Now xxxp, xxop and xxy,
I don't care xx I die.
Don't ever leave me,
Don't ever say goodbye.