《正则表达式必知必会》这本书的确很是的简练实用,准肯定位了正则表达式的用途,简明的介绍了正则表达式的基本使用形式。简单易懂,容易记忆,虽然从表面上看这本书的内容比较少并且简单,可是说的内容都是很是基础的砖石,不管想建造多么高大、吊炸天的大楼,基础的砖石都是必不可少的。javascript
看完这本书,受益颇多,在此将书中的内容再次总结,搭起本身对于正则表达式的认识框架。前端
正则表达式的使用对象:文本/字符串。用途对文本/字符串进行搜索、替换。java
正则表达式的基本匹配单位:一个字符。正则表达式
正则表达式在不一样的程序设计语言中,实现会有不一样,因为本人是主要是前端工做,因此关注点基本放在javascript上。框架
正则表达式的匹配进化史:设计
一、匹配单个字符 /a/regexp
二、匹配多个字符 /cat/对象
三、匹配多个重复字符ip
a. /a+/字符串
b. /a*/
c. /a?/
d./a{m,n}/
e./a{m}/
f./a{m,}/
四、匹配一组字符
[a-z0-9]
[^a] 非a
五、匹配边界
a. 匹配单词边界
\b 单词的边界
\B 非单词的边界
b. 匹配字符串边界
^ 字符串的开头
$ 字符串的结尾
六、使用子表达式
/(ab)/
七、回溯引用
/(a)\1/ \{n}n表明子表达式的相对位置,注意嵌套式的子表达式,位置是从外向里计算
八、先后查找
a. /a(?=b)/
b. /a(?<=b)/
ps.先后查找的部分不在返回的匹配结果中,仅仅用于位置的肯定
九、嵌入条件
a. /(a)(?(1)b|c)/
b.(a(?(?=b)b|c))
部分元字符说明:
+ 匹配[1,+∞]个字符
* 匹配[0,+∞]个字符
? 匹配[0,1]个字符
说明:先后查找的方向,向左为向后,向右为向前
?= 向前查找
?<= 向后查找
(?(condition)true-regexp|false-regexp) 嵌入条件,相似于?的三元运算
condition为先后查找时:
?= 正前查找
?! 负前查找
?<= 正后查找
?<! 负后查找
以书中反复提到的一句话做为结束:
把必需匹配的状况考虑周全并写出一个匹配结果符合预期的正则表达式很容易,但把不须要匹配的状况考虑周全并保证把他们排除在匹配结果之外要困难的多。