C#实现正则表达式入门实战教程(4)

  可以看到在\s?之后,我用.+?来尽量少的匹配字符,直到遇到))或者")就停止匹配,如果只用.+,就会过多的匹配括号。 光有正则表达式还不够,还要能替换。替换的难点在如何保留第一个变量。正则表达式提供了提取括号里匹配到则值得机制,如(\w)\1(\w)\2,能够匹配aabb,第一个\w匹配到了a,由于在括号中,因此被记录了下来,可通过\1来获得第一个括号中的内容,以此类推。在替换时,C#(其他语言不清楚),可利用$1来获得第一个括号中匹配到的内容。则替换的语句是MB($1)。注意,这里替换的语句不需要转义,因为替换不需要匹配,只要将字符原封不动替换就可以了。下面是代码:

public static void Lesson4(){
    Console.WriteLine("第四课,替换函数。");
    string rule = @"MA\((.+?),\s?.+?(\)\)|""\))";
    string[] enters =
    {
        @"Console.WriteLine(MA(""a"", ""b""))",
        @"Console.WriteLine(""a"" + MA(""a"", GetType().ToString()));",
        @"Console.WriteLine(MA(""a"", GetType().ToString()));",
        @"Console.WriteLine(""a"" + MA(""a"", ""a"".Substring(1)) + ""b"");"
    };
    string replacement = @"MB($1)";
    foreach (var enter in enters)
    {
        Console.WriteLine(Regex.Match(enter, rule).Convert2String(enter));
        Console.WriteLine("替换后由{0}变为{1}", enter, Regex.Replace(enter, rule, replacement));
    }
}

  正则表达式看起来很难,但如果您把这4课都做一遍,就已经基本掌握了正则表达式了,日常的应用是没有问题的。语法有些难记,我的建议是先不管语法,要用就随时翻手册。欢迎各位同学在评论区与我互动。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/db7a812191618750f5a27570493da9b1.html