首页 > 其他 > 详细

《正则表达式必知必会》读书笔记

时间:2014-03-05 21:54:48      阅读:437      评论:0      收藏:0      [点我收藏+]

匹配单个字符串

  • “ . ”来匹配任意单个字符
  • 需要找“ . ”本身使用“\.”,"\"为特殊字符序列的开头

匹配一组字符串

  • 匹配多个字符中的某一个

    • 使用“ [ ”“ ] ” 来定义一个字符集合

  • 利用字符集和区间

    • [0-9] 和 [A-Z] 和 [A-Za-z0-9]

  • 取非匹配

    • [^0-9a-b] 注意:" ^ " 是作用于整个区间,而非紧跟后面的

使用元字符

  • 匹配空白字符

    • \B —— 回退并删除一个字符(BackSpace键)\
    • \f —— 换页符
    • \n —— 换行符
    • \r —— 回车符
    • \t —— tab符
    • \v —— 垂直tab符

  • 匹配数字

    • \b —— 任意一个数字字符(等价于[0-9])
    • \D —— 任意一个非数字字符(等价于[^0-9])

  • 匹配字母和数字(与非字母和数字)

    • \w —— 任意一个字母(大小写都可),数字,下划线(等价于[a-zA-Z0-9_])
    • \W —— 任意一个非字母,数字或非下划线的字符(等价于[^a-zA-Z0-9_])

  • 匹配空白字符(于非空白字符)

    • \s —— 任意一个空白字符(等价于[\f\n\r\t\v])
    • \S —— 任意一个非空白字符(等价于[^\f\n\r\t\v])

  • 匹配十六进制货八进制数值

  • 使用POSIX字符类 (javascript不支持)

重复匹配

  • 匹配一个或多个字符

    • 使用 “ + ” 表示同一个字符(或字符集合)的多次重复, 至少需要匹配一个字符。
    • 字符集合中的元字符会被解析为普通字符,例如:[\w.] 等价于 [\w.]

  • 匹配零个或多个字符

    • 使用 “ * ” 表示同一个或多个字符(或字符集合)的多次重复。
    • 可以把 “ * ” 理解为 “在我前面的字符或字符集合是可选的”
    • “ + ”“ * ” 区别是前者至少需要匹配一个字符,后者可以不出现

  • 匹配零个或多个字符

    • 使用 “ ? ” 表示同一个字符(或字符集合)的零次或一次出现。

匹配的重复次数

  • 为重复匹配的次数设定一个精确的值

    • 使用“ { ”“ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个精确的值。
    • 例子: [3] [1] [2]
    • 正则:
      }

  • 为重复匹配次数设定一个区间

    • 使用“ { ”“ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个区间的值。
    • 例子:
      • [3] [1] [2]
      • myArray[0]
    • 正则:
      }

  • 匹配 “至少重复多少次”

    • 例子:
      • [3] [1] [2]
      • myArray[0]
    • 正则:
      }

  • 匹配 贪婪型元字符 和 懒惰型元字符

    • 贪婪型元字符 : 懒惰型元字符
      • : *?
      • : +?
    • {n,} : {n,}?

    • 例子:需要取得元素标签

      • BK and cK
    • 正则:
      ?

位置匹配

  • 单词边界
    • 使用 * \b * 来匹配一个单词的开始或结尾* \b * 匹配这样的一个能构成单词的字符(字母,数字和下划线),等同于 * \w *
    • 例子:The cat acattered his food all over the room
    • 正则:
      b
    • 输出:cat #
    • 使用 * \B * 表示不匹配一个单词的边界 等同于 * \W *#
  • 字符串边界
    • 使用 * ^ * 定义字符串的开头
    • 例子:this is bad
    • 正则:
      #</li>
      <li>使用 ** (?m) ** 开启分行模式
      分行模式吧分隔符当做一个字符串分隔符来对待 
      有许多正则表达不支持分行模式 </li>
      <li>例子:
      //a
      //b</li>
      <li>正则:
      (?m)^\s//.$`

子表达时

  • 使用 * “( ” ** “ ) ” * 来表示子表达式
    • 例子:1983-03-13
    • 正则:
      }
      #
  • ?使用子表达式的嵌套,应该按照先內后外的原则进行

回朔引用:前后一致匹配

  • 使用 * \数字 * 表示表达式的后半部分引用在前半部分中定义的子表达式,可以想象变成变量
    • 例子:of of and and
    • 正则:
      1
  • 替换模式 P85 需要继续了解

前后查找

  • 正向前查找 * ?= *
  • 正向后查找 * ?<= *
  • 负向前查找 * ?! *
  • 负向后查找 * ?

javascript的正则 附录

  • exec:匹配 RegEx
  • match:匹配 字符串
  • replace:替换 字符串
  • split:分拆
  • search:测试指定的字符串是否匹配字符串的方法
  • test: 测试指定的字符串是否匹配RegEx的方法

javascript 命令行注意点

  • g:激活全局搜索功能
  • i:匹配不分字母大小写
  • m:多行字符串
  • s:单行字符串
  • x:忽略空表字符
  • $‘:将返回被匹配字符串前面的所有东西
  • $`:将返回被匹配字符串后面你的所有东西
  • $&:将返回被匹配到的所有东西

《正则表达式必知必会》读书笔记,布布扣,bubuko.com

《正则表达式必知必会》读书笔记

原文:http://www.cnblogs.com/maiyan/p/3582984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!