正则表达式语法
1、行的起始和结束
^:表示一行的开始
^cat:匹配的是以c作为一行的第一个字符,紧接着一个a,紧接一个 t 的文本
$:表示文本以什么结束
2、字符组
1)匹配若干个字符之一
gr[ae]y:先找到 g ,跟着是一个 r,然后是一个 a 或 e,最后一个 y
<h[1-3a-b]>:‘-’(连字符),用来表示一个范围
2)排除型字符组
<h[^2^4^d]>: ‘^’表示排除
3、用点号匹配任意字符
03.19.76:点号表示匹配任意字符
4、多选结构
匹配任意子表达式
|:或,依靠它,能够把不同的子表达式组成一个总的表达式,而这个总的表达式又能够匹配任意的子表达式。
Jeff(re|er)y:先匹配 Jeff 然后 是 re 或 er 最后 y
5、可选元素
July? (fourth|4th) :问号表示可选项,即 y 这个字符可以存在也可以不存在
6、其它量词:重复出现
<h1 +color *= *"red" *> :
加号是表示加号之前的字符必须出现,并且重复无数次,这里表示 h1 后面必须有一个空格。
星号表示星号之前的字符可以不出现,但是出现必须是前面的字符并且可以出现无数次。这里表示 color 之后可以有空格并且可以有无数个,也可以没有空格
1)规定重现次数范围:区间
w{1,2}:表示w至少出现一次,最多出现2次
2)表示重复的元字符小结
次数下限 | 次数上限 | 含义 | |
? | 无 | 1 | 可以不出现,也可以只出现一次(单次可选) |
* | 无 | 无 | 可以出现无数次,也可以不出现(任意次数均可) |
+ | 1 | 无 | 可以出现无数次,但至少要出现一次(至少一次) |
7、括号及反向引用
([a-z])([1-9])\1\2 :表示第一个字符范围为 a 到 z,第二个字符范围为 1 到 9,第三个字符与第一个括号的值一样,第四个字符与第二个括号的值一样。
括号能够“记忆”其中的子表达式匹配的文本值,不论这个文本是什么,元字符列 ‘\1’ 可以记住他们。
8、转义
www\.baidu\.com :将元字符 点 转义为普通的字符
9、总结
匹配单个字符的元字符 | ||
元字符 | 匹配对象 | |
. | 点号 | 匹配单个任意字符 |
[...] | 字符组 | 匹配单个列出的字符 |
[^...] | 排除型字符组 | 匹配单个列出的字符 |
\char | 转义字符 | 若char是元字符,或转义序列无特殊含义时,匹配char对应的普通字符 |
提供计数功能的元字符 | ||
? | 问号 | 容许匹配一次,单非必须 |
* | 星号 | 可以匹配多次,也可能不匹配 |
+ | 加号 | 至少需要匹配一次,至多可能任意多次 |
{min,max} | 区间量词 | 至少需要min次,至多容许max次 |
匹配位置的元字符 | ||
^ | 脱字符 | 匹配一行的开头位置 |
$ | 美元符 | 匹配一行的结束位置 |
\< | 单词分界符 | 匹配单词的开头位置 |
\> | 单词分界符 | 匹配单词结束位置 |
其它元字符 | ||
| | alternation | 匹配一行的开头位置 |
(...) | 括号 | 限定多选结构的范围,标注量词作用的元素,为反向引用“捕获”文本 |
\1,\2 | 反向引用 | 匹配之前的第一,第二组括号内的字表达式匹配的文本 |