1. 什么是正则表达式?
(1)正则表达式由普通字符和元字符组成,通过此模式,用来匹配特定的内容。
(2)普通字符:包括大小写字母、数字。
(3)元字符:是一些特殊字符,这些字符并不表示字面上的含义,而会被解释为一些特定的含义。
(4)正则表达式区分大小写。
2.元字符
(1)匹配字符
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[0-9]: 数字
[a-z]: 小写字母
[A-Z]: 大写字母
[^ ]: 匹配指定范围外的任意单个字符(出现在[]中的^代表排除)
(2)匹配次数
*: 匹配前面的一个字符任意次,包括0次
+: 匹配其前面的字符1次或多次
?: 匹配其前面的字符1次或0次
{m, n}: 匹配其前面的字符至少m次,至多n次。
(3)匹配位置
^:行首
$:行尾
( ):分组, 作为一个整体,\1引用第一个小括号内匹配的内容,以此类推\2, \3
A|B:A整体 或者 B整体
(4)特殊符号
\d 匹配任何数字
\D 匹配非数字字符
\w 匹配字母、数字与下划线
\W 匹配不是字母、数字与下划线的字符
\s 匹配空白字符
\S 匹配非空白字符
\b 匹配单词的开始和结束
\B 匹配不是单词的开始和结束的位置
3.正则表达式模块re
正则表达式字符串: r’正则表达式’
(1)常用方法
compile(): 编译正则表达式
findall(): 返回匹配列表(如果有小括号, 返回小括号内正则匹配的内容)
match(): 从字符串的开头对模式进行匹配,如果成功,则返回一个对象, 如果失败, 则返回None。
>>> import re
>>> m = re.match('foo', 'foo')
>>> m
<_sre.SRE_Match object at 0x7f77fa6af4a8>
>>> m.group()
'foo'
>>> m = re.match('foo', 'bar')
>>> m
>>> m.group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
search(): (在字符串任意位置)如果搜索到成功的匹配对象, 否则返回None。
>>> m = re.match('foo', 'seafood')
>>> m
>>> m.group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> m = re.search('foo', 'seafood')
>>> m
<_sre.SRE_Match object at 0x7f77fa6af4a8>
>>> m.group()
'foo'
split(): 正则表达式作为分隔符把字符串分隔为一个列表,返回列表
sub()/subn(): 将某字符串中匹配正则表达式模式的部分进行替换。
(2)match()/search() 返回对象的方法
group():返回整个正则表达式匹配的字符串,同group(0)。
group(i): 正则表达式中第i个”()”括起来部分匹配的内容
groups():返回被整个正则表达式匹配的字符串组成的元组
start():返回匹配开始的位置
end():返回匹配结束的位置
span():返回一个元组包含匹配(开始, 结束)的位置