元字符
(1)匹配边界
^ -----行首
$ ----- 行尾
(2)重复次数
? ----- 0或1
* ----- ≥0
+ ----- ≥1
{n,}----- ≥n
{n,m}----- ≥n,≤m
{n} ----- 重复n次
(3)各种字符的表示
[] —表示单字符
[abc] —匹配a、b、c其中的一个。
[a-z]
[0-9a-zA-Z_]
\d 数字
\w 数字字母下划线
\s 空白字符(空格,制表、换行)
\b 单词的开始和结束
.匹配任意字符,除换行符以外。
re模块使用的步骤
(1)pattern = re.compile(‘正则表达式’)将正则表达式编译成一个pattern对象。
(2)pattern提供一系列的方法,来对文本进行匹配,一般返回一个match对象。
(3)通过使用match对象提供的方法来获取匹配结果。
match对象有以下方法:
match.group(0)----获取匹配结果
match.group()----获取匹配结果
match.span()----获取匹配范围
match.start()—匹配开始位置
match.end()—匹配结束位置
import re
pattern = re.compile(r'\d+')
content = 'one12twothree34four'
m1 = pattern.match(content)#从0位置开始匹配
m2 = pattern.match(content,2,10)#从e位置开始匹配
m3 = pattern.match(content,3,10)#从1位置开始匹配
print(m3.group())
print(m3.group(0))
print(m3.span())
print(m3.start())
print(m3.end())
pattern对象的方法
(1)match方法:默认从头开始匹配,只匹配一次,返回一个match对象。
pattern.macth(
‘要匹配的字符串’,必须指定,
start,匹配的开始位置
end,匹配的结束位置。
)---->match对象
(2)serach方法:从任意位置匹配,只匹配一次,返回一个match对象。
pattern.search(
‘要匹配的字符串’,必须指定,
start,匹配的开始位置
end,匹配的结束位置。
)---->match对象
(3)findall:全文匹配,将匹配到的结果放到一个list中返回给我们,多次匹配。
pattern.findall(
‘要匹配的字符串’,必须指定,
start,匹配的开始位置
end,匹配的结束位置。
)---->list
(4)finditer:全文匹配,多次匹配,返回一个包含匹配结果的迭代器。
pattern.finditer(
‘要匹配的字符串’,必须指定,
start,匹配的开始位置
end,匹配的结束位置。
)---->iteror
(5)split:切分字符串,按照整个表达式所指定的内容切分。
str.split(’,’)
pattern.split(
‘要切分的字符串’,
切分的次数。不指定就是默认,默认全部切割
)---->list
(6)sub:用指定的字符串,替换正则表达式匹配的到目标字符串的内容。
pattern.sub(
repl,替换成什么。
content,替换什么。
count,可以不指定,替换的次数。默认替换所有。
)
repl可以是字符串,也可以是函数。
当repl是函数的时候,这个函数有一下要求:
1,函数必须带一个参数,这个参数是一个match对象。
def func(match):
'''
对match对象的操作。
'''
print(macth.group())
2.当在sub方法里面传入这个参数时,这个match对象其实就是用正则匹配到的每一个match对象。
3.这个函数是有返回值的,返回值必须是一个字符串,将来是用这个字符串进行替换目标字符串的。