zoukankan      html  css  js  c++  java
  • C#正则表达式

    正则表达式原理篇:http://deerchao.net/tutorials/regex/regex.htm#mission  http://www.cnblogs.com/dwlsxj/p/Regex.html

    在线测试工具:http://tool.chinaz.com/regex/

    C#中简单用法:

    l Regex. IsMatch用法

     //简单匹配某单词

                Console.WriteLine(" IsMatch演示:");
                Regex reg = new Regex("aaron");
                Console.WriteLine(string.Format("result1: {0}", reg.IsMatch("my name is aaron.")));     //True
                Console.WriteLine(string.Format("result2: {0}", reg.IsMatch("my name is arron.")));     //False

     //默认是区分大小写的,所以下面2个会返回不同的结果

                Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron")));      //False
                Console.WriteLine(string.Format("result4: {0}", Regex.IsMatch("my name is arron.", "aaron")));      //False

     //这个是不区分大小写的

                Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron", RegexOptions.IgnoreCase)));     //True

    l Regex. Replace用法

    简单替换某单词

    //简单替换某单词
                Console.WriteLine(" Replace演示:");
                reg=new Regex("r");
                Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R")));                            //my name is aRRon.
                Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R", 1)));//只进行一次替换         //my name is aRron.

    l Regex.Match用法

     //**********************Match用法*****************************

    复制代码
                Console.WriteLine(" Match演示:");
                reg = new Regex("aa...");//开头2个字母必须是aa,并且后面跟任意3个字符
                Match m=reg.Match("my name is aaron, aaRON, Aaron");
                while(m.Success)
                {
                    Console.WriteLine(m.Value);
                    m = m.NextMatch();
                    //这里由于默认是区分大小写的,所以
                    //  aaron       是Match的
                    //  aaRON       也是Match的
                    //  Aaron       不会Match
                }
    复制代码

    l Regex.Matchs用法

    //******************MatchsCollection用法***********************
                Console.WriteLine(" MatchsCollection演示:");
                MatchCollection mc = Regex.Matches("my name is aaron, aaRON, Aaron", "aa...");//开头2个字母必须是aa,并且后面跟任意3个字符

                Console.WriteLine(string.Format("found: {0}", mc.Count)); 

    基础篇:

    1、元字符:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.90).aspx

    限定符 描述 模式
    .

    匹配出换行符以外的任意字符

    d*.d

    w

    匹配字母、数字、下划线、汉字

    "be+"
    s

    匹配任意空白符

      
    "rai?n"
    d

    匹配数字

    ",d{3}"
    

    匹配单词开始或结束,它只是匹配一个位置

    "d{2,}"

    ^

    匹配字符串开始

    "d{3,5}"

    $

    匹配字符串结束

    "d{3,5}"

    2、重复次数:默认1次:{1} 如d和d{1}等效的

    代码/语法

    说明

    *

    重复0次或多次

    +

    重复一次或多次

    ?

    重复零次或1次

    {n}

    重复n次

    {n,}

    重复至少n次

    {n,m}

    重复至少n次,但不多于m次

    3、分支:相当于if条件中的或运算: 注意  ^s{2}$|^d{3}$ 和 ^s{2}|d{3}$ 是不一样的

    一个分支匹配上了就不会去管后面的分支。好像if(a || b)

    4、分组:()

    (d{1,3}){3}d{3}:这个正则表达式的意思就是把我们分组的小括号里面的东西重复三次,也就是说我们至少匹配3个最多匹配9个数字,后面再加上三个数字

    5.反义字符:可以理解为if条件中的!非运算。

    W

    匹配任意一个不是字母或数字下划线或汉字的字符

    S

    匹配任意一个不是空白符的字符

    D

    匹配不是数字的字符

    B

    匹配不是单词开头或者结尾的位置

    [^X]

    匹配除了X以外的任意字符

    [^aeiou]

    匹配除了aeiou这几个字母以外的任意字符

    6、转义字符

    如果你想要得到元字符本身的话需要使用“”来取消这些元字符的特殊意义

    有以下特殊字符需要转义: * . ? + $ ^ [ ] ( ) { } | /

  • 相关阅读:
    MATLAB 模板匹配
    ACDSee15 教你如何轻松在图片上画圈圈、画箭头、写注释
    Qt 显示一个窗体,show()函数和exec()函数有什么区别?
    Qt 将窗体变为顶层窗体(activateWindow(); 和 raise() )
    Qt QSS样式化 菜单Qmenu&QAction
    Qt 获取文件夹中的文件夹名字
    Qt 删除文件夹或者文件
    欧洲终于承认“工业4.0”失败,互联网经济严重落后中美
    深入浅出数据结构
    浅谈城市大脑与智慧城市发展趋势
  • 原文地址:https://www.cnblogs.com/lxf1117/p/4702744.html
Copyright © 2011-2022 走看看