1.基本字符
1.1 行定位符
行定位符用来描述字符串的边界。以字符串’hello world’为例
表示行的开始
如^hello world 可以匹配到 ‘hello world xxxxxxxxxxxxx’。但匹配不到’xxxxxxxxxxxxx hello world’
表示行的结束
如hello world$ 可以匹配到’xxxxxxxxxxxxx hello world’。但匹配不到 ‘hello world xxxxxxxxxxxxx’
无行定位符则表示可以在任意部分匹配。
1.2 元字符
字符 | 功能 |
---|---|
. | 匹配除换行符外的任意字符 |
\w | 匹配字母、数字、下划线或汉字 |
\W | 匹配除字母、数字、下划线或汉字以外的字符 |
\s | 匹配任意空白字符 |
\S | 除单个空白字符(包括Tab键和换行符)以外的所有字符 |
\d | 匹配数字 |
\D | 任意非数字 |
\A | 从字符串开始处开始匹配 |
\Z | 从字符串结束处开始匹配 |
\b | 匹配一个单词的边界,单词的分解符通常是空格、标点符号或者换行 |
\B | 匹配非单词边界 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
() | 被括起来的表达式将作为分组 |
1.3限定符
限定符 | 功能 | 示例 |
---|---|---|
? | 匹配前边的字符串0次或1次 | hello?world可以匹配hellworld和helloworld |
+ | 匹配前边的字符串1次或多次 | hello+world可以匹配helloworld到hellooooooo…world |
* | 匹配前边的字符串0次或1次或多次 | hello*world可以匹配hellworld和helloworld到helloooo…world |
{n} | 匹配前边的字符串n次 | hello{3}world可以匹配helloooworld |
{n,} | 匹配前边的字符串至少n次 | hello{3,}world可以匹配helloooworld到hellooooo…world |
{n,m} | 匹配前边的字符串至少n次,至多m次 | hello{3,10}world可以匹配helloooworld到hellooooooooooworld |
1.4字符类
使用方括号[]
- [abcdef]表示匹配字母abcdef中的任意一个
- [a-z]表示匹配任意一个小写字母
- [A-Z]表示匹配任意一个大写字母
- [0-9]表示匹配任意一个数字
- 在只考虑英文的情况下,[a-z0-9A-z]则完全等同于\w
- 如果想匹配任意一个汉字,可以用[\u4e00-\u9fa5]
1.5排除字符
将^符号放在方括号中,表示排除的意思。
该表达式用于匹配任何一个不是字母的字符
1.6选择字符
选择字符使用 | 符号来实现,可以理解为逻辑“或”
如 (^\d{18}$)|(^\d{17}(a|X|x))
此正则表达式表示匹配18位的数字,
或者前17位为数字且第18位为a、X或x 的18位字符
1.7转义字符
即同python中的转义字符 \ 符号。将特殊字符转化为普通字符。
1.8分组
即使用小括号 ( )。