正则表达式

一、什么是正则表达式

  正则表达式(Regular Expression):强大的文本处理工具。
        模式匹配和替换的强大工具。

  linux中主要通过 grep 来发挥正则表达式(以行为单位)的强大功能!

  注意,这里的*等表示的是量词单位,不是之前提到的通配符,在正则表达式里请不要与通配符混淆!

二、正则表达式入门

  两部分组成:
    1.原义文本字符
    2.元字符

  []  一类,即符合一个都行 [abc] 符合一个都行
  [^] 负向类,即取反 [^abc] a b c 以外的都行
  [a-z] 范围类,是一个闭区间,支持连写 [a-zA-Z] 所有大小写字符,想匹配的比如本身就有-等
    就直接在后面加- [0-9-]

  g 全局查找 i 忽略大小写 m 多行处理
  预定义类:
    . 回车换行之后的所有字符
    \d 数字字符0-9
    \D 非数字字符
    \s 空白符 space
    \S 非空白符
    \w 数字字符下划线 word
    \W 非数字字符下划线

  边界
    \b 单词边界(bound)
    \B 非单词边界
    ^ 以xxx开始
    $ 以xxx结束

  量词
    ? 0次或者1次
    + 1次或者多次
    * 任意次
    {n} 出现了n次
    {n,} 至少出现了n次
    {n,m} n次到m次

  贪婪模式:123456 \d{3,6} 会匹配6次,尽可能多地匹配 默认模式
  非贪婪模式:\d{3,6}? 非贪婪模式,匹配3次就不匹配了

  分组:Byron{3} 默认匹配n字符,采用分组匹配整个单词 (Byron){3}

  或 | 使用分组限制或的范围,不然默认整个正则表达式左右两个部分或 Byr(on|Ca)rry

  反向引用 $1 $2 $n等表示第n个分组的内容,(其它语言大同小异 如\1表示分组1的文本)

  忽略分组,在分组前加?: (?: Byron)

  前瞻:正则表达式在匹配时向前检查是否符合断言
  正向前瞻 exp(?=assert) exp 与assert都是正则表达式,断言部分不匹配,只是作为断言
  负向的 exp(?!assert)
  后顾相反

   完整正则表达式字符,参考http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

  常用正则表达式:

    http://blog.csdn.net/onebigday/article/details/5429868/

  正则表达式在线测试工具:

    http://tool.oschina.net/regex

posted on 2018-11-23 21:53  LeviZhuang  阅读(129)  评论(0编辑  收藏  举报

导航