这里将列出大部分常用的正则表达式元字符,以方便我们参考:
一、范围字符
操作符 | 说明 | 例子 | 可以匹配的式子 |
---|
. | 匹配除换行符以外的任意字符 | - | - |
[ ] | 字符集,对单个字符给出取值范围 | [abc] | a、b、c |
[^ ] | 反义字符集,对单个字符给出排除范围 | [^abc] | 非a非b非c的单个字符 |
[a-z] | 字符范围,对单个字符给出取值范围 | [a-z] | a、b、c、……、z |
[^a-z] | 反义字符范围,对单个字符给出取值范围 | [^a-z] | 任意不是a、b、c、……、z的字符 |
| | 左右表达式任意一个 ,即“或者”,可以连用 | abc|def|ghi | abc、def、ghi |
二、重复限定符
操作符 | 说明 | 例子 | 可以匹配的式子 |
---|
* | (贪婪字符)前一个字符0次或无限次扩展 | abc* | ab、abc、abcc、abccc等等 |
+ | 前一个字符1次或无限次扩展 | abc+ | abc、abcc、abccc等等 |
? | (非贪婪字符)前一个字符0次或1次扩展 | abc? | ab、abc |
{m} | 扩展前一个字符m次 | ab{2}c | abbc |
{m,n} | 扩展前一个字符m至n次(含n) | ab{1,3}c | abc、abbc、abbbc |
{m,} | 扩展前一个字符m次或更多次 | ab{2,}c | abbc、abbbc、abbbbc等等 |
{,n} | 扩展前一个字符最多n次 | ab{,3}c | ac、abc、abbc、abbbc |
( ) | 分组标记,内部只能使用 | 操作符 | (abc)、(abc|def) | abc;abc、def |
三、可打印字符
操作符 | 说明 |
---|
\d | 匹配一个数字字符,等价于[0-9] |
\D | 匹配一个非数字字符,等价于[^0-9] |
\w | 匹配一个字母或数字或下划线字符,等价于[A-Za-z0-9_] |
\W | 匹配一个非字母、数字、下划线字符,等价于[^A-Za-z0-9_] |
四、非打印字符
操作符 | 说明 |
---|
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等,等价于 [ \f\n\r\t\v] |
\S | 匹配任何非空白字符,等价于 [^ \f\n\r\t\v] |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
五、定位符
操作符 | 说明 | 例子 | 可以匹配的式子 |
---|
^ | 匹配字符串开头 | ^abc | 开头为abc的字符串 |
$ | 匹配字符串结尾 | abc$ | 结尾为abc的字符串 |
\b | 匹配一个单词边界,也就是指单词和空格间的位置 | de\b | 能匹配单词code,不能匹配单词founder |
\B | 匹配非单词边界 | de\B | 不能匹配单词code,能匹配单词founder |
六、转义字符
操作符 | 说明 | 例子 | 可以匹配的式子 |
---|
\ | 转义字符,也可将特殊字符变成一般字符 | \n和\\ | 换行符 和 \ |
七、贪婪匹配和懒惰匹配
1.贪婪匹配
一般默认采用贪婪匹配,即输出匹配最长的子串。
例如一个正则表达式ab.*d
,匹配字符串abccdefdr
,那么得到的结果将是abccdefd
。这里得到的是最长的子串,这种匹配模式叫做贪婪匹配。
2.懒惰匹配
如果不希望匹配最长的字符串,而是想匹配最短的那个,那么我们需要将正则表达式改成ab.*?d
,用来匹配字符串abccdefdr
,那么得到的结果将是abccd
。这种匹配模式我们称为最小匹配,也叫非贪婪匹配或懒惰匹配。