1。在正则表达式中定义变量并调用:

using System;

using System.Text.RegularExpressions;

public class Test

{

    public static void Main ()

    {

        // Define a regular expression for repeated words.

        Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",

          RegexOptions.Compiled | RegexOptions.IgnoreCase);

        // Define a test string.        

        string text = "The the quick brown fox  fox jumped over the lazy dog dog.";

        

        // Find matches.

        MatchCollection matches = rx.Matches(text);

        // Report the number of matches found.

        Console.WriteLine("{0} matches found.", matches.Count);

        // Report on each match.

        foreach (Match match in matches)

        {

            string word = match.Groups["word"].Value;

            int index = match.Index;

            Console.WriteLine("{0} repeated at position {1}", word, index);   

        }

        

    }

    

}

其中?<word>定义了一个变量,之后的\k<word>调用自身定义的变量word。

2。好用的Regex.Replace 和Match.Result

这个例子实现输入的日期更改格式的功能,用正则表达式自动搜索字符串并替换,注意正则表达式中变量的使用。

public string MDYToDMY(string input) 

return Regex.Replace(input, 

"\\b(?<month>\\d{1,2})/(?<day>\\d{1,2})/(?<year>\\d{2,4})\\b", 

"${day}-${month}-${year}"); 

Match.Result是返回一个可以带正则表达式中变量值的字符串。

public string Extension(string url) 

Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", 

RegexOptions.Compiled); 

return r.Match(url).Result("${proto}${port}"); 

posted on 2008-02-23 16:56  8user  阅读(253)  评论(0编辑  收藏  举报