1、定位符
语法 | 说明 |
---|---|
^ | 匹配字符开始的位置 |
$ | 匹配字符串结尾的位置 |
2、选择符
选择符为"|",可以理解为“或”的意思。
示例 | 说明 |
---|---|
hello|world | 匹配字符串hello或者world |
3、字符范围
正则表达式用[]来限定字符范围。
示例 | 说明 |
---|---|
[abc] | 查找含字符a、b、c的字符串 |
[^abc] | 匹配除了a、b、c以外的字符 |
[a-zA-Z0-9] | 查找a~z、A~Z、0~9 |
上述的连字符-表示的范围遵循字符编码的顺序。
4、点字符与限定符
语法 | 说明 | 示例 |
---|---|---|
. | 匹配一个任意字符 | f.o,匹配foo,fto等 |
? | 匹配前面的字符0次或者1次 | hello?,匹配hell、hello |
+ | 匹配前面的字符1次或多次 | hello+,匹配hello、hellooooooo |
* | 匹配前面的字符0次或者多次 | hello*,匹配hell、hello(任意个o) |
{n} | 匹配前面的字符n次 | hel{2}o,只能匹配hello |
{n,} | 匹配前面的字符最少n次 | hel{2,}o,匹配hello,helll(任意个l)o |
{n,m} | 匹配前面的字符最少n次,最多m次 | 类似上面的语法,不再举例 |
5、小括号
小括号有两个作用:改变作用范围、分组
示例 | 说明 |
---|---|
改变作用范围:(thir|four)th | 匹配thirth、fourth |
分组:(app){2} | 匹配appapp |
6、反斜杠
反斜杠的作用大致有:转义、表示一些不可以打印的字符、指定预定义的字符集等。
示例 | 说明 |
---|---|
[\^\$\*\\] | 表示匹配含有^$*\四种符号的字符串 |
\x27 | 用于linux匹配单引号。因为单引号是定界符,要匹配单引号需要用\x27进行匹配(避免被shell当成参数分隔符) |
(a)(b)(c)\3 | “\数字”表示对括号内字符串的引用,数字表示第几个括号。例子为匹配abcc |
\d | 任意十进制数字,相当于[0-9] |
\D | 任意非十进制数字 |
\w | 任意单词字符,相当于[a-zA-Z0-9] |
\W | 任意非单词字符 |
\s | 任意空白字符,如空格,水平制表符 |
\S | 任意非空白字符 |
\b | 单词分界符 |
\B | 非单词分界符 |
\xhh | 表示hh(十六进制2位数字)对应的ASCII字符,如\x61表示a |
7、贪婪匹配与惰性匹配
贪婪匹配是指尽可能多的匹配字符串,如果需要改成惰性匹配,需要在限定词后加"?"。
举例: 如果想要匹配a****b这样的字符串,那么我如果输入了a00jshbksb字符串,那么匹配到的字符串是a00jshb还是a00jshbksb呢?
在默认情况下是贪婪匹配,则通过a.*b进行匹配则会匹配出a00jshbksb;如果我需要a00jshb这样的匹配结果,则应该使用"?"进行控制,即使用a.*?b进行匹配。如图: