正则表达式使用

正则表达式使用


时间:2015年8月
操作平台:VS2010

作用

字符串匹配

字符串查询

匹配方法

数量词

  • 写在前面:数量词的使用属于贪心行为,因为常常会导致不预期的匹配
  • +
    • 包含一个或者多个该字母的都会被匹配
    • "c+b+a+":则"cccbbbaaadd"会与之匹配
  • *
    • 匹配0个或者多个紧邻其前面的字符
    • "ba*",则只要有b,就会形成匹配,如"badeg","bed"
  • ?
    • 精确匹配0次或者多次
    • "ba?d",则a有0次或者1次时才会形成匹配,如"bed","bad",而"baad"就不会形成匹配
  • {,}
    • 可以指定字符的数目的上下限
    • "ba{1,3}c",则a在1到3次都是可以匹配的,如"baac","bac","baaac"都会匹配,而bc就不会发生匹配
    • 不指定下限时,不会发生匹配,不指定上限时,表示>=

使用字符类

  • .

    • 匹配任何单个字符
    • 代码

      string str49 = "the qiuck fast ha csd";
      MatchCollection matchSet49;
      matchSet49 = Regex.Matches(str49 , "."); //.会匹配任何字符
      foreach(Match m in matchSet49)
      {
          Console.WriteLine(m.Index);//会输出所有下标
      }
      
  • []
    • 确定包含的范围区间
    • [a-z]表示匹配所有小写字母,[a-zA-Z]表示匹配所有大小写字母,[a-zA-Z0-9]表示匹配所有大小写字母和数字
    • [^aeiou],表示aeiou的否定,即只要不是aeiou都会进行匹配
    • \d表示1-9,因为是字符串中,因此需要些为[\\d]
    • \s表示空格符,\S表示非空格字符
    • \w表示单词类字符,相当[A-Za-z]\W表示非单词类字符

用断言修改正则表达式

  • 字符串首尾断言
    • "^h" 该正则表达式只与首字符为h的字符串匹配,比如与"haaa","haaah"相匹配,但与"ahh"不匹配
    • "h$" 该正则表达式只与尾字符为h的字符串匹配,比如与"aaah","aah"相匹配,但与"haa"不匹配
      *字符串边缘匹配断言
    • "\\bh"表示空格后面或者首字母为"h"的都能匹配

使用分组构造

匿名组
  • "(\\s\\d{2}\\s)"
命名组
代码
    Console.WriteLine("匿名");
    string str410 = "08/14/57 46 02/25/29 45 06/05/85 18 03/12/88 16";
    string reg410 = "(\\s\\d{2}\\s)";//可以提取"空格+2个数字+空格"形式的字符串
    MatchCollection m410 = Regex.Matches(str410 , reg410);
    foreach (Match m in m410)
    {
        Console.WriteLine(m.Groups[0].Captures[0]);
    }

    Console.WriteLine("命名组");
    reg410 = "(?<dates>(\\d{2}/\\d{2}/\\d{2}\\s))";
    m410 = Regex.Matches(str410,reg410);
    foreach (Match m in m410)
    {
        Console.WriteLine(m.Groups["dates"]);
    }
正向搜索断言和反向搜索断言

正则表达式的选项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值