二十一、正则表达式

正则表达式简介
 概念
  正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑(可以用来做检索,截取或者替换操作)。
 作用
1.给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)。
2.可以通过正则表达式,从字符串中获取我们想要的特定部分。
3.还可以对目标字符串进行替换操作。
'''
match的使用:re.match 尝试从字符串的起始位置匹配一个模式,
如果不是起始位置匹配成功的话, match()就返回 None
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0) 指可以不从起始位置进行匹配
'''
import re
patter='ello'
word='hello python'
#mat=re.match(patter,word,flags=re.I)# re.I表示忽略大小写
mat=re.search(patter,word,flags=re.I)
if mat is not None:
print(mat.group())
print(mat.start())
print(mat.span())
else:
print('匹配失败')
'''
分组进行匹配
'''
#1使用()
# 匹配座机号010-444212,格式是区号是3或4位,号码是5,8位
import re
# pattern=r'(d{3,4})-([1-9]d{4,7}$)'
# s='010-678362'
# o=re.match(pattern,s)
# print(o)
# print(o.group())
# print(o.group(2))
# print(o.groups())
# print(o.groups()[1])
# # um进行匹配
# pattern=r'<(.+)><(.+)>.+</2></1>'
# s='<html><body>htmlsss</body></html>'
# o=re.match(pattern,s)
# print(o)
#起别名使用
pattern=r'<(?P<p_html>.+)><(?P<p_body>.+)>.+</(?P=p_body)></(?P=p_html)>'
s='<html><body>htmlsss</body></html>'
o=re.match(pattern,s)
print(o)

贪婪模式和非贪婪

  贪婪模式指 Python 里数量词默认是贪婪的,总是尝试匹配尽可能多的字符。非贪婪模式与贪婪相反,总是尝试匹配尽可能少的字符,可以使用"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。

print('贪婪模式')
v= re.match(r'abc(d+)','abc123')
print(v.group(1))
#非贪婪模式
print('非贪婪模式')
v= re.match(r'abc(d+?)','abc123')
print(v.group(1))

re 模块中其他常用的函数,具体百度资料。


原文地址:https://www.cnblogs.com/dangjingwei/p/12441158.html