正则表达式
- 输入字符串的开始位置和结束位置的匹配
^ :匹配输入字符串的开始位置
$ :匹配输入字符创的结束位置
e.g: ^[0-9]+bbb$
[0-9]匹配单个数字,[0-9]+匹配一个或多个数字,并以bbb结尾
2.运算符优先级
下表描述的优先级从高到低,相同优先级从左到右
运算符 | 描述 |
---|---|
\ | 转义符 |
(),(?=),[] | 方括号和圆括号 |
+,*,?,{n},{n,},{n,m} | 限定符 |
$,^, \任何元字符,任何字符 | 对应的序列和定位点 |
| | “或操作”,替换,一般使用括号创建子表达式 |
e.g: h|dooo : 匹配的是 h 或者 dooo
(h|d)ooo : 匹配的是hooo 或者 dooo
3.匹配规则
基本模式匹配
模式,一组描述字符串特征的字符,是正则表达式的基本元素,往往用一个特殊字符表示一个范围内,重复出现,或表示上下文。
a. 匹配由特定字符开始的字符串
^first : 匹配到以first开头的字符串
b.匹配由特定字符结束的字符串
last$ :匹配到以last结尾的字符串
c.
fist :匹配任何包含该模式的字符串
d.精准匹配
^right$ :精准匹配,只匹配right字符串(个人觉得体现不出正则表达式强大之处)
e.转义序列匹配
^\ :匹配以\ 开头的字符
字符簇
[[AaBbCcDd]只能表示一个字符
[a-z] //匹配所有的小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的字母
[0-9] //匹配所有的数字
[0-9.-] //匹配所有的数字,句号和减号
[ \f\r\t\n] //匹配所有的白字符
用 连子号 - 表示一个一个字符的范围
当在一组方括号里使用 ^ 时,它表示"排除"的意思,常常用来剔除某个字符。这里注意与开始位置匹配相区分
[^a-z] //除了小写字母以外的所有字符
[^\\\/] //除了(\)(/)之外的所有字符
[^\"\’] //除了双引号(")和单引号(’)之外的所有字符
重复出现
跟在字符或字符簇后面的花括号{}用来确定前面的内容的重复出现的次数。一个数字 {x} 的意思是前面的字符或字符簇只出现x次 ;一个数字加逗号 {x,} 的意思是前面的内容出现x或更多的次数 ;两个数字用逗号分隔的数字 {x,y} 表示 前面的内容至少出现x次,但不超过y次。我们可以把模式扩展到更多的单词或数字。注意有没有开始位置匹配符导致的两者的差别
^[a-zA-Z_]$ 所有的字母和下划线
^a{2,} 可以匹配aardk和aab,但aple不行
a{2,} 可以匹配aad和kaa,但Nantuiuiet不行
.{2} 所有的两个字符
* 匹配0个或多个字符
. 匹配除换行符之外的任何单个字符
+ 匹配1个或多个字符
? 匹配0个或一个字符
下面补充一下正则的一些基础知识。
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\t 匹配制表符
\v 匹配垂直制表符
模式修正符
i 不区分大小写
m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾
s 让.能匹配\n
x 忽略空白
U 取消贪婪,相当于(.*?)
A 与^效果一样
D 结尾处不忽略回车 ,在结束处有符的时候,在匹配的字符串后面加上回车,符的时候,在匹配的字符串后面加上回车,依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配
Unix系统里,每行结尾只有“<换行>”,即”\n”;
Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即”\n”;