1.匹配规则 :
\d | 匹配一个数字 |
\w | 匹配一个字母或者数字 |
. | 匹配一个任意的字符, 除了空格 匹配的是字符 |
* | 匹配0次或者多次前面的子表达式 匹配的是子表达式的长度 |
+ | 匹配至少一个前面的子表达式, 匹配的是子表达式的长度 |
? | 匹配0个或者一个前面的子表达式 匹配的是子表达式的长度 |
{n} | 匹配n个前面的子表达式 匹配的是子表达式的长度 |
{n, m} | 匹配n-m个前面的子表达式 匹配的是子表达式的长度 |
\s | 匹配一个空格, \s+ 表示匹配多个空格 |
[ ] | 表示匹配的内容范围, 内容是否在括号中的内容 [13] 可以匹配字符1, 3, 13 ; [1,3]匹配字符1,3 ; [1-3] 匹配字符1,2,3 |
[0-9a-zA-Z\_] | 可以匹配一个数字、字母或者下划线; |
[0-9a-zA-Z\_]+ | 可以匹配至少由一个数字、字母或者下划线组成的字符串 |
^ | 表示行的开头, ^\d表示必须以数字开头 |
$ | 表示行的结尾, $\d表示必须以数字结尾 |
| | 或者 A|B 表示A或者B |
( ) | ()内的内容表示的是一个表达式,()本身不匹配任何东西, eg: (ab){1,3}表示ab一起出现1到3次, ab{1,3} 表示a然后后面有个b, b出现1到3 次 |
\b | 匹配一个单词边界,即字与空格间的位置。 |
2.*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
eg: <H1>Chapter 1 - 介绍正则表达式</H1>
(1) " /<.*>/ " 匹配的内容是 : <H1>Chapter 1 - 介绍正则表达式</H1> , 第一个 < 到 最后一个 > 之间的内容.
(2) " /<.*?>/ " 匹配的内容是 : <H1>Chapter 1 - 介绍正则表达式</H1> , 第一个 < 到 第一个 > 之间的内容.
3.在Python中, 在字符串之前添加 r 表示该字符串用于正则, 不需要进行转义.
4.re模块常用的方法 :
(1) match() 方法判断是否匹配,如果匹配成功,返回一个Match
对象,否则返回None
。如果正则表达式中定义了组( 就是使用小括号 ),就可以在Match
对象上用group()
方法提取出子串来。
(2) re.spilt() 方法用于切割一个字符串.
(3) re.compile(r'^(\d{3})-(\d{3,8})$') 表示编译正则表达式