C#Regex.Replace-也在替换字符串中搜索匹配项
鉴于以下情况:C#Regex.Replace-也在替换字符串中搜索匹配项,c#,regex,C#,Regex,鉴于以下情况: string input = "xSxSx"; var result = Regex.Replace(input, "xSx", "xTx"); // result == "xTxSx" 看起来替换字符串没有用于进一步的匹配,这就是为什么我们没有得到预期的“xtx” 如何解决这个问题?是否有某种特殊的符号告诉引擎使用第一个替换已到位的字符串查找第二个匹配?这是因为,一旦匹配了字符,就不会再次匹配。因此,第二次匹配的字符串是Sx,而不是xSx 您需要在此处使用环视: Regex
string input = "xSxSx";
var result = Regex.Replace(input, "xSx", "xTx");
// result == "xTxSx"
看起来替换字符串没有用于进一步的匹配,这就是为什么我们没有得到预期的“xtx”
如何解决这个问题?是否有某种特殊的符号告诉引擎使用第一个替换已到位的字符串查找第二个匹配?这是因为,一旦匹配了字符,就不会再次匹配。因此,第二次匹配的字符串是
Sx
,而不是xSx
您需要在此处使用环视:
Regex.Replace(input,”(?只要对任何更复杂的东西使用一个循环,你不能简化为一个look[向前/向后]
string test = "xSxSx";
string result = string.Empty;
while(true) {
result = Regex.Replace(test, "xSx", "xTx");
if(result != test)
test = result;
else
break;
}
您可能不希望这成为默认行为,因为这样Regex.Replace(输入,“a”,“aa”)
将产生一个无限循环。
string test = "xSxSx";
string result = string.Empty;
while(true) {
result = Regex.Replace(test, "xSx", "xTx");
if(result != test)
test = result;
else
break;
}