zoukankan      html  css  js  c++  java
  • 正则表达式的应用

    1.拆分字符串
    1.1 以下例举一个拆分句子的demo:
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Program
    {
    public static void Main(string[] args)
    {
    Console.WriteLine("请输入要分拆的字符串,并按Enter键确认。");
    string input=Console.ReadLine();
    string pattern=@"\.|,|:|;|。|,|:|;";
    string[] rs=Regex.Split(input,pattern);
    Console.WriteLine("拆分后的所包含的分句为:");
    foreach (string s in rs)
    {
    Console.WriteLine(s);
    }
    Console.ReadKey(true);
    }
    }
    }
    1.2 拆分HTML标签
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Program
    {
    public static void Main(string[] args)
    {
    string input="<b>这是</b><b>一个</b><b>寂寞的天。</b><b>下着</b><b>有点</b><b>伤心地</b><b>雨。</b>";
    string pattern="<[^>]*>";
    Regex r=new Regex(pattern);
    string[] rs=r.Split(input);
    Console.WriteLine("拆分后的所包含的分句为:");
    foreach (string s in rs)
    {
    Console.WriteLine(s);
    }
    Console.ReadKey(true);
    }
    }
    }

    2.查询字符串
    Regex类提供了三个方法来实现字符串的查询和匹配,Match,Matchs和IsMatch.
    2.1 Match在指定的输入字符串中搜索Regex构造函数中指定的正则表达式,返回一个Match类对象,如果Match类对象的Success属性为true,则存在匹配的字符串,这个在前面的博文里已经说明了,可以使用NextMatch进行下一次匹配。
    下面的例子查找HTML片段中所有带引号的URL
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Test
    {
    static void PrintURL(string s)
    {
    string pattern="href\\s*=\\s*\"[^\"]*\"";
    Match m=Regex.Match(s,pattern);
    while(m.Success)
    {
    Console.WriteLine(m.Value);
    m=m.NextMatch();
    }
    }
    public static void Main()
    {
    PrintURL("href=\"http:\\\\www.baidu.com\" href=\"http:\\\\www.soso.com\"");
    Console.ReadKey();
    }
    }
    }

    2.2 上面的例子也可以简化的返回一个MatchCollection集合,利用foreach遍历:
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Test
    {
    static void PrintURL(string s)
    {
    string pattern="href\\s*=\\s*\"[^\"]*\"";
    MatchCollection m=Regex.Matches(s,pattern);
    foreach(Match str in m)
    {
    Console.WriteLine(str);
    }
    }
    public static void Main()
    {
    PrintURL("href=\"http:\\\\www.baidu.com\" href=\"http:\\\\www.soso.com\"");
    Console.ReadKey();
    }
    }
    }   
    假如我们仅仅想知道引用的地址可以使用捕获组及Match类的Groups属性。例如:
     using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Test
    {
    static void PrintURL(string s)
    {
    string pattern="href\\s*=\\s*\"([^\"]*)\"";
    MatchCollection m=Regex.Matches(s,pattern);
    foreach(Match str in m)
    {
    Console.WriteLine(str.Groups[0] );
    }
    }
    public static void Main()
    {
    PrintURL("href=\"http:\\\\www.baidu.com\" href=\"http:\\\\www.soso.com\"");
    Console.ReadKey();
    }
    }
    }


    2.3.1 IsMatch指示正则表达式再输入字符串中是否找到匹配项。
    查找是否在字符创中包含<a>
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Program
    {
    public static void Main(string[] args)
    {
    Regex r=new Regex ("<a[^>]*>",RegexOptions.IgnoreCase);
    if(r.IsMatch("<a href=\"http://www.baidu.com/\">链接</a>"))
    Console.WriteLine("包含<a>标签");
    else
    Console.WriteLine("不包含<a>标签");
    Console.ReadKey(true);
    }
    }
    }
    2.3.2用来验证输入16个数字
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Program
    {
    public static void Main(string[] args)
    {
    Regex r=new Regex (@"^\d{4}-\d{4}-\d{4}-\d{4}$");
    if(r.IsMatch("1216-2593-3395-2612"))
    Console.WriteLine("通过");
    else
    Console.WriteLine("不通过");
    Console.ReadKey(true);
    }
    }
    }

    3.替换字符串
    Regex类的Replace方法用来替换字符串。下面的代码将输入字符串中的"China"都替换为“中国”。
    using System;
    using System.Text.RegularExpressions;
    namespace RegexSplit
    {
    class Test
    {
    static void EtoC(string s)
    {
    Console.WriteLine("源字符串:\n{0}",s);
    Console.WriteLine("替换后为:");
    Console.WriteLine(Regex.Replace(s,"China","中国"));
    }
    public static void Main()
    {
    EtoC("China啊我的祖国,China啊China!");
    Console.ReadKey();
    }
    }
    }

  • 相关阅读:
    字节
    服务器每个网站占用资源
    in exists 条件查询
    NUnit2.0详细使用方法
    敏捷方法之极限编程(XP)和 Scrum区别
    学习内容及计划
    关于查看网页源文件不显示源代码(打开的是桌面文件夹)的问题
    用JS取float型 小数点 后两位
    [转]什么是CMMI?
    六月新版微软一站式示例代码库发布 新增20个Windows示例代码
  • 原文地址:https://www.cnblogs.com/rohelm/p/2384087.html
Copyright © 2011-2022 走看看