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。
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); } } }
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}
"
); }
正则式官方详解: