【问题标题】:Replace the start and end of a string ignoring the middle with regex, how?用正则表达式替换忽略中间的字符串的开头和结尾,如何?
【发布时间】:2010-12-20 02:31:36
【问题描述】:

我正在使用 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>";

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

用于很多事情,所以我需要一口气完成,有没有办法一次调用全部替换正则表达式?

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

谢谢!

【问题讨论】:

    标签: c# regex


    【解决方案1】:

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

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

    【讨论】:

    • 当然你也可以只使用静态字符串作为开始和结束标签,使用 (.+) 作为匹配正文。
    【解决方案2】:

    试试这个:

    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 变量的名称更改为对您的特定应用程序更有意义的名称。

    【讨论】:

      猜你喜欢
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2021-07-07
      • 2017-12-31
      • 2015-04-27
      • 1970-01-01
      相关资源
      最近更新 更多