参考文档 正则表达式必知必会 Ben Forta著 杨涛译
一、 正则表达式用途 搜索和替换 正则表达式是用来匹配和处理文本的字符串
二、 元字符分为两种, 一种匹配文本的(例如. *), 一种是正则表达式语法所要求的(例如[])。这些元字符要匹配自己本事需要转义""
空白元字符
“贪婪型”元字符,进行匹配时是”多多益善而不是适可而止”
”懒惰型”元字符,进行匹配时是“匹配尽可能少的字符”
五、位置匹配
cat 用来匹配完整的单词,只匹配一个位置,单词边界,不匹配任何字符
B 不匹配单词边界
子表达式
子表达式的作用是把同一个表达式的各个相关部分组合在一起,对重复次数元字符的作用对象作出京珠的设定和控制、对"|"操作的OR条件作出准确的定义
子表达式将多个元素作为一个元素处理,用(),例如(abc)指必须匹配abc的字符串,abc作为独立元素,相当于一个元素
子表达式中的或用"|",例如(19|20) 指的是19或20
子表达式回溯引用
小结:
使用元字符
[w.]+@[w.]+.w 匹配合法电子邮箱地址
[1-9][d]{1,3}[-]d{1,2}[-]d{1,2}
匹配IP地址
(([1-9]|[1-9][0-9]|1d{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]|[1-9][0-9]|1d{2}|2[0-4][0-9]|25[0-5])
一位数字非0
两位数字,第一位不是零
1开头的任意三位数字
2开头的,第二位在0-4之前的任意三位数字
25开头的,第三位在0-5之间的三位数字
匹配重复次数
+ 匹配前面的字符或字符集合一次或多次
* 匹配前面的字符或字符集和集合零次或多次
? 匹配前面的字符或字符集合零次或一次
{2,4} {6} 匹配前面的字符或字符集合具体次数
{3,} 匹配前面的字符或字符集合至少多少次
{,3} 匹配前面的字符或字符集合最多多少次
在字符集合中[.+] 不需要转义,默认是普通字符
位置匹配
cat 用来匹配完整的单词,只匹配一个位置,单词边界,不匹配任何字符
B 不匹配单词边界
^ 只在[]中,紧跟[后面时,是非的意思,在字符集合外面,并位于一个模式的开头,^将匹配字符串的开头
$ 匹配字符串或字符集合的结尾
子表达式
(),例如(19|20|21)d{2} 指的是以19、20、21开头的四位数字
表达式的回溯引用 前后一致引用
[]+(w+)[]+1 1代表第一个子表达式() 2代表第二个子表达式 我们可以把回溯引用理解为变量 代表整个正则表达式
正则中 []、() 、{}区别
[] 指匹配其中一个即可,例如[abc],只要匹配abc中的一个字母就可以
() 将()中的表达式看做一个元素,例如(abc)指匹配到abc的字符串
{} 指的是前面表达式匹配的次数