C# 如何用正则表达式替换忽略中间的字符串的开头和结尾?

C# 如何用正则表达式替换忽略中间的字符串的开头和结尾?,c#,regex,C#,Regex,我正在使用c#regex.replace,我想替换此字符串: test = "<p align=\"center\"><b><font size=\"4\">RWGRF-W02PS-PU-BU-FLD</font></b></p>"; with: <center><b><font size=\"4\">RWGRF-W02PS-PU-BU-FLD</font></b>

我正在使用c#regex.replace,我想替换此字符串:

test = "<p align=\"center\"><b><font size=\"4\">RWGRF-W02PS-PU-BU-FLD</font></b></p>";

with: <center><b><font size=\"4\">RWGRF-W02PS-PU-BU-FLD</font></b><center>";
RWGRF-W02PS-PU-BU-FLD

”; 带有:RWGRF-W02PS-PU-BU-FLD”; 现在我可以很容易地用两个替换调用来完成这项工作,但是

用于很多事情,所以我需要一次性完成这项工作,是否有必要在一次调用regex中完成全部替换

<>我试着用.+来匹配字符串中间的任何东西,但是它显然也替换了整个字符串的中间部分,我希望它忽略字符串的那部分而不去触摸它,我知道有一种方式我无法理解它。我也很欣赏答案,但是如果有人能解释它是如何工作的,那就更好了:p>
谢谢!

我会用括号存储匹配,然后替换它

 exp = new Regex(@"YourtagStartRegex(bodyRegex)YourtagClosingRegex");
 str = exp.Replace(str, "<center>$1</center>");
exp=new Regex(@“YourtagStartRegex(bodyRegex)yourtagclosingreex”);
str=exp.Replace(str,“$1”);
试试这个:

private static readonly Regex pRegex =
    new Regex("^<p align=\"center\">(.*)</p>$");

public static string ReplaceString(string input)
{
    return pRegex.Replace(input,
        match => "<center>" + match.Groups[1].Value + "</center>");
}
私有静态只读正则表达式pRegex=
新的正则表达式(“^

(.*)

$”; 公共静态字符串替换字符串(字符串输入) { 返回pRegex.Replace(输入, match=>“”+match.Groups[1]。值+“”); }

显然,将方法和Regex变量的名称更改为对您的特定应用程序更有意义的名称。

当然,您可以使用静态字符串作为开始和结束标记,使用(++)作为匹配体。