正则表达式 regex
语法容易掌握, 如何解决实际问题难。
正则表达式测试器:http://deerchao.net/ (软件开发者的正则表达式30分钟入门教程)
同一个问题有多种解决方案。区分大小写。
.字符可以匹配任何单个字符、字母、数字或其本身。可连续出现,可间隔出现。
\ 元字符,表示这个字符有特殊含义,而不是字符本身的的含义。如果搜\本身,则\\。
第三章 匹配一组字符
[] 字符集合,匹配结果是该集合里的任意一个成员相匹配的文本。字符集合在不需要区分大小写,或只需匹配某个特定部分的搜索中常见。
A-Z,a-z,A-z(不常用)
-连字符只能用在[]之间,除此之外,为一普通字符,不需转义。
练习:查找RGB值。
取非匹配:^ 给定字符集合里的所有字符或字符区间,不仅限于紧跟在^字符后面的那一个字符或字符区间。
第四章 使用元字符
两种元字符:1,匹配文本;2.regex语法所要求的。
[\b]
\f backspace \n 换行符 \r 回车符
windows文本行的结束标签:\r\n。
匹配数字:\d [0-9] \D [^0-9] (记忆:大写取反)
\w [a-zA-Z0-9_] \W [^a-zA-Z0-9_]
空白字符:\s [\f\n\r\t\v] \S
前缀 \x 十六进制 前缀 \0 八进制
第五章 重复匹配
匹配一个或多个字符:在其后面加+字符作为后缀即可。(必须放在集合的外面).至少要有一次。
在字符集合里使用 的时候,.和+这样的元字符将被解释为普通字符,不需转义,但转 了效果一样。
//至少爱我一次
匹配0个或多个字符:在其后面加*字符作为后缀即可。(必须放在集合的外面),可有可无。不太建议使用。
//若爱,请深爱
匹配0个或一个字符:?
//要么爱,要么不爱
注意:如果同时用[]和?的话,要把?放在[]后面。
重复次数:{}
设定区间:{m,n} ?等价于{0,1}
至少重复多少次:给出最小的即可{3,} {n}正好N次。
*、+为贪婪型元字符。多多益善而非适可而止。
懒惰型元字符,在贪婪型元字符加一个?后缀即可。
第六章 位置匹配
单词结尾或开头 \b。不匹配一个单词边界则\B。
\b匹配且只匹配一个位置,不匹配任何字符。
字符串边界
开头^ 结尾$.
^有多种用途,只有当出现在一个字符集里并紧跟在[后面时,才发挥求非作用。
第七章 使用子表达式
子表达式必须用()括起来。
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 改为 (\d{1,3}\.){3}\d{1,3}
分析各个子表达式的时候,按照先内后外 的原则。
第八章 回溯引用
回溯引用指的是模式的后半部分引用在前半部分中定义的字表达式。
//不同的正则表达式实现方式不一样。
//只能用来引用模式里的子表达式。通常从1开始。
\l和\u只能把下一个字符或表达式转换为小写或大写,\L和\U则是后面的所有字符转换为小写或大写,直到遇上\E。
第九章 前后查找
js不支持向后查找;使用向前查找的时候,正则表达式分析器将向前查找并处理某字符,但不会将其包括在最终的搜索结果中。
?= 向前查找 ?<=向后查找
向前查找模式的长度是可变的,可包含.和+之类的元字符,向后查找模式只能是固定长度。
^不能用来对前后查找进行取非处理。前后查找是用!来取非。