C# 中使用正则表达式 Regex.Matches方法的几个应用

//①正则表达式 = > 匹配字符串
string Text = @"This is a book , this is my book , Is not IIS";
//定义一个模式字符串,不仅仅是纯文本,还可以是正则表达式
string Pattern = "is";
MatchCollection Matches = Regex.Matches(
    Text,
    Pattern,
    RegexOptions.IgnoreCase |         //忽略大小写
    RegexOptions.ExplicitCapture |    //提高检索效率
    RegexOptions.RightToLeft          //从左向右匹配字符串
    );
Console.WriteLine("从右向左匹配字符串:");
foreach (Match NextMatch in Matches)
{              
    Console.Write("匹配的位置:{0,2} ", NextMatch.Index);
    Console.Write("匹配的内容:{0,2} ", NextMatch.Value);
    Console.Write("/n");  
}
Console.WriteLine();
//②匹配以大写I开头
//“/b”是转义序列,代表开头和结尾(一个字的边界,忽略空白或标点)
Pattern = @"/bI";
Matches = Regex.Matches(
    Text,
    Pattern,
    RegexOptions.ExplicitCapture    //提高检索效率
    );
Console.WriteLine("从左向右匹配字符串:");
foreach (Match NextMatch in Matches)
{
    Console.Write("匹配的位置:{0} ", NextMatch.Index);
    Console.Write("匹配的内容:{0} ", NextMatch.Value);
    Console.Write("/n");
}
Console.WriteLine();
//③匹配以大写I开头,大写S结尾的字符串
//“/b”是转义序列,代表开头和结尾(一个字的边界,忽略空白或标点)
///S*匹配任何不是空白的字符
Pattern = @"/bI/S*S/b";
Matches = Regex.Matches(
    Text,
    Pattern,
    RegexOptions.ExplicitCapture    //提高检索效率
    );
Console.WriteLine("从左向右匹配字符串:");
foreach (Match NextMatch in Matches)
{
    Console.Write("匹配的位置:{0} ", NextMatch.Index);
    Console.Write("匹配的内容:{0} ", NextMatch.Value);
    Console.Write("/n");
}
Console.WriteLine();
//④匹配his 或者iis,其中忽略大小写
Pattern = @"[h|i]is";
Matches = Regex.Matches(
    Text,
    Pattern,
    RegexOptions.IgnoreCase |         //忽略大小写
    RegexOptions.ExplicitCapture    //提高检索效率
    );
Console.WriteLine("从左向右匹配字符串:");
foreach (Match NextMatch in Matches)
{
    Console.Write("匹配的位置:{0} ", NextMatch.Index);
    Console.Write("匹配的内容:{0} ", NextMatch.Value);
    Console.Write("/n");           
}
Console.WriteLine();
//⑤对Url的分组匹配
Text = "http://192.168.0.1:2008";
Pattern = @"/b(/S+)://(/S+)(?::(/S+))/b";
Matches = Regex.Matches(Text, Pattern);
Console.WriteLine("从左向右匹配字符串:");
foreach (Match NextMatch in Matches)
{
    Console.Write("匹配的位置:{0} ", NextMatch.Index);
    Console.Write("匹配的内容:{0} ", NextMatch.Value);
    Console.Write("/n");
    for (int i = 0; i < NextMatch.Groups.Count; i++)
    {
        Console.Write("匹配的组 {0}:{1,4} ", i + 1, NextMatch.Groups[i].Value);
        Console.Write("/n");
    }
}
Console.Read();

①从右向左匹配字符串:
匹配的位置:43 匹配的内容:IS
匹配的位置:35 匹配的内容:Is
匹配的位置:22 匹配的内容:is
匹配的位置:19 匹配的内容:is
匹配的位置: 5 匹配的内容:is
匹配的位置: 2 匹配的内容:is
②从左向右匹配字符串:
匹配的位置:35 匹配的内容:I
匹配的位置:42 匹配的内容:I
③从左向右匹配字符串:
匹配的位置:42 匹配的内容:IIS
④从左向右匹配字符串:
匹配的位置:1 匹配的内容:his
匹配的位置:18 匹配的内容:his
匹配的位置:42 匹配的内容:IIS
⑤从左向右匹配字符串:
匹配的位置:0 匹配的内容:http://192.168.0.1:2008
匹配的组 1:http://192.168.0.1:2008
匹配的组 2:http
匹配的组 3:192.168.0.1
匹配的组 4:2008


知识共享许可协议
《C# 中使用正则表达式 Regex.Matches方法的几个应用》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     167.52ms