1 正则表达式
正则表达式就是一种表示方式,可以查找匹配特定格式的文本.
正则表达式由两个基本组成部分 :一般字符 特殊字符(元字符 meta metacharacter)
2 元字符介绍
* \ 通常用来关闭后续字符的特殊意义,有时则是相反地打开后续字符的特殊意义.
* . 匹配除换行符外的所有字符 (只匹配一个).
* \* 匹配在它之前的任意数目(没有也行 0 1 多个)的单个字符
.*代表匹配任一字符的任意长度
* $ 匹配前面的正则表达式,在行或字符串的结尾处.
* ^ 匹配紧接着的正则表达式,在行或字符串的起始处.
* [...] 方括号表达式,匹配方括号内的任一字符,连字符-指的是连续字符的范围。^符号置于方括号里的第一个字符有反向含义,即匹配不在方括号的任何字符.
eg:【^edg】 匹配非 e d g的字符
3 BRE 和 ERE
1 BRE(基础正则表达式)
* \{n,m\} 区间表达式 ,匹配在它前面的单个字符重现的次数区间
\{n\}:重现n次.
\{n.\}:至少重现n次
\{n,m\}:重现n到m次,最多255
* \( \) 将\( 与\)间的模式存储在特殊的保留空间,以便再次引用,最多可以有九个子模式.
eg:\(ab\).*\1 匹配于ab组合的两次重现,中间可以存在任何数目的字符.
2 ERE (扩展正则表达式)
* 后向引用不存在.
* 区间表达式可以写在{}里,且不需加前置反斜杠字符,如\{n,\}.
eg: a{5} ERE a\{5\} BRE
q{10,42} ERE q\{10,42\} BRE.
* + 匹配前面的一个或者多个实例
* ?匹配前面的正则表达式0 个或者1个实例.
* | 匹配|前面或者后面的表达式.
* ()匹配位于括号内的表达式.
eg:(read|write)+ 匹配1个或者多个read or write.
3 运算符
* \w 匹配任何单词组成的字符.
* \W 匹配任何非单词组成的字符.
* \< \> 匹配单词的起始与结尾.
* \b 匹配单词的起始或结尾处的空字符串.
* \d 匹配数字.
* \s 匹配任意的空白符 \S 非空白.
* \B 匹配两个单词组成字符之间的空字符串.
单词应包括字母,数字,下划线.
4 后向引用机制
匹配正则表达式匹配的先前的部分.
将子表达式放在\(\)里,\n ,1<n<9,指匹配于第几个括号内表达式的字符.
eg:\(ab\)\(cd\)[def]*\2\1
匹配到的可以是:abcdcdab,abcddddcdab.
\([" ']\).*\1 匹配以单引号或者双引号括起来的字.
5 补充
* .*为什么可以表示任意数目的字符?.
.代表除换行外的任意字符,.*就是..................,表示任意 任意 任意。。。.
理解成了代数关系,即.=a,.*=aaaaaa 错误.
* ^$同时使用,这种情况是将括起来的正则表达式匹配整个字符串(或行).
ab^cd ^就表示它自身