一、基础语法
import re
# 从起始行开始匹配
print(re.match('www', 'www.baidu.com').span())
print(re.search('www', 'www.baidu.com').span())
# 不从起始行开始匹配(match只匹配字符串开头,如果找不到则返回None;search匹配整个字符串,直到找到一个匹配)
print(re.match('com', 'www.baidu.com'))
print(re.search('com', 'www.baidu.com').span())
# 如果匹配不成功就返回None
print(re.match('weixin', 'www.baidu.com'))
二、运用
import re
line = 'Shallow encounter world of mortals, deep read life'
# 以world为间隔
matchObj = re.match(r'(.*) world (.*?) .*', line, re.M | re.I)
if matchObj:
print("matchObj.group() : ", matchObj.group())
print("matchObj.group(1) : ", matchObj.group(1))
print("matchObj.group(2) : ", matchObj.group(2))
else:
print("No match!!")
matchObj = re.search(r'(.*) dogs (.*?) .*', line, re.M | re.I)
if matchObj:
print("matchObj.group() : ", matchObj.group())
print("matchObj.group(1) : ", matchObj.group(1))
print("matchObj.group(2) : ", matchObj.group(2))
else:
print("No match!!")
三、替换
import re
phone = "134-3618-20721 #微信电话号码 "
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone)
print("电话号码是: ", num)
# 删除非数字(-)的字符串
num = re.sub(r'\D', "", phone)
print("电话号码是: ", num)
四、查找数字
import re
# 匹配至少一个数字
pattern = re.compile(r'\d+')
m = pattern.match('one2three456seven8nine')
print(m)
m = pattern.match('one2three456seven8nine', 9, 15)
print(m)
# 返回匹配成功的整个字符串
res = m.group(0)
print(res)
# 起始位置
res = m.start(0)
print(res)
# 结束位置
res = m.end(0)
print(res)
# 返回匹配成功的整个字符串的索引
res = m.span(0)
print(res)
五、不区分大小写
import re
# re.I 表示忽略大小写
pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)
m = pattern.match('Hello World Hello World')
print(m)
# 返回第一个分组匹配成功的字符串
res = m.group(1)
print(res)
# 等价于 (m.group(1), m.group(2), ...)
res = m.groups()
print(res)
# 不存在第三个分组
# res = m.group(3)
# print(res)
# 返回第一个分组匹配成功的字符串的索引
res = m.span(1)
print(res)
六、字符串分隔
import re
#字符串分隔
print(re.split('\W+', 'runoob, runoob, runoob.'))
# 不限次数分隔
print(re.split('\W+', 'r unoob, runoob, runoob.'))
# 分隔一次
print(re.split('\W+', 'r unoob, runoob, runoob.',1))