python正则表达式

懵懂的女人 提交于 2019-12-05 02:23:00

参考:https://www.runoob.com/python/python-reg-expressions.html 整理所得。

一、 march, search, findall, sub的区别

import re

s = 'xx,Hello World Wide web, helloPython'

# 生成一个正则表达式
reg = re.compile(r'(hello\w*)',re.IGNORECASE)

# 从头开始匹配,并返回第一个匹配的结果。如果一开始就不匹配停止匹配,返回None。
print(reg.match(s))
# 从0开始第3位(包含)开始匹配,并返回第一个匹配的结果。如果一开始就不匹配就返回None。
print(reg.match(s,3))

# 从头开始匹配返回第一个匹配的结果,如果一开始就不匹配就继续匹配。
print(reg.search(s))
# 从0开始第4位(包含)开始匹配,第30位截止(不包含),返回第一个匹配的结果,如果一开始就不匹配就继续匹配。
print(reg.search(s,4,32))

# 返回所有结果
print(reg.findall(s))

# 替换所有的hello为hi~
print(reg.sub('hi~',s))

二、贪婪和非贪婪匹配

import re

# 贪婪模式
print(re.findall(r'(a.*b)','aacbccacxxxbbb'))

# 非贪婪模式
print(re.findall(r'(a.*?b)','aacbccacxxxbbb'))
print(re.findall(r'(a.*?)','aacbccacxxxbbb'))

['aacbccacxxxbbb']
['aacb', 'acxxxb']
['a', 'a', 'a']

三、分组匹配高级用法

import re
s = '1102231990xxxxxxxx'
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',s)
print(res.groupdict())
{'province': '110', 'city': '223', 'born_year': '1990'}

四、常用的正则规则(参考:https://www.runoob.com/python/python-reg-expressions.html

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!