用正则表达式替换字符串的开头和结尾忽略中间,怎么样?

时间:2010-12-20 02:31:37

标签: 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><center>";

现在我可以很容易地通过两次调用来替换,但是

用于很多事情,所以我需要一次性完成,无论如何要做到这一点取代所有的一次调用正则表达式?

我尝试使用。+来匹配字符串中间的任何内容,但是它显然也会替换整个字符串的中间部分,我希望它忽略字符串的那部分而不是触摸它,我知道那里是一种我无法弄明白的方式。我也很欣赏答案,但如果有人能解释它的工作方式会更好:)

谢谢!

2 个答案:

答案 0 :(得分:1)

我会将匹配与括号一起存储,然后替换它。

 exp = new Regex(@"YourtagStartRegex(bodyRegex)YourtagClosingRegex");
 str = exp.Replace(str, "<center>$1</center>");

答案 1 :(得分: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>");
}

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