zoukankan      html  css  js  c++  java
  • 正则表达式学习记录

    一,字符匹配
    1。 \b  代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
    2。 .   是另一个元字符,匹配除了换行符以外的任意字符。
    3。 \n 换行符
    4。 \d 匹配一个数字 【0,1,2,3.....】
    5。  \w  匹配字母或数字或下划线或汉字等
    6。  \s  匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
    7。  ^ 匹配字符串的开始
    8。  $ 匹配字符串的结束
    9。  \ 取消字符的特殊意义,当然如何查找\ 也要用\,那么就是\\
    10。  []  匹配其中的任何一个字符,可以是范围,也可以是指定的特定的字符
              如果是范围使用“-”符号,否则直接指定即可
    11。  |   相当于编码中的or 前后只要有一个满足条件,即可匹配成功。
    12。  ()  将括号中的所有正则表达式作为一个整体

    二,重复匹配数量
    1。  *   同样是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复使用任意次。
    2。  {一个整数} 表示大括号前面的重复出现的次数
         {一个小整数,一个大整数} 重复匹配的次数,最少不能少于,最大不能大于

            例子:0\d{2}-\d{8}  以0开头,后面跟两位数字,以"-"符号连接,后面跟8个数字
    3。  +   这里的+是和*类似的元字符,不同的是*匹配重复匹配任意次(可能是0次),而+则重复匹配1次或更多次
    4。 ?   重复零次或一次,也就是可有可无

    *
    匹配前面的子表达式任意次。例如,zo*能匹配“z”,“zo”以及“zoo”,但是不匹配“bo”。*等价于{0,}。
    +
    匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
    ?
    匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。

    三反义,及其他
    .    常用的反义
    表3.常用的反义代码 代码/语法 说明
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
    18    (?=exp)  也叫零宽度正预测先行断言
          (?<=exp) 也叫零宽度正回顾后发断言


     

    贪婪与懒惰

    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)ab(第四到第五个字符)

    为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。

    表5.懒惰限定符
    代码/语法说明
    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复
  • 相关阅读:
    2011 年50+优秀的网页设计(下)
    25+令人惊讶的是令人难以置信的WordPress技术支持网站
    2011 漂亮的网站(上)
    2011 美丽的网站(下)
    38 jQuery和CSS多级下拉菜单解决方案(一)
    HTMl代码片段
    30 +漂亮的jQuery菜单导航(一)
    分享几套还算不错的后台模板(有源码下载)
    配 色 方 案
    一个小故事
  • 原文地址:https://www.cnblogs.com/SouthAurora/p/2267281.html
Copyright © 2011-2022 走看看