正则表达式在编程语言、数据库等领域都应用广泛,可以自己总结知识点,等忘记了再回来查看,当然也有专门的正则表达式网站。
Re库是Python的标准库,不用我们安装,其主要用于字符串匹配。
Re库的调用方式:
import re
正则表达式的表示类型:
raw string类型,即原生字符串类型,和普通字符串不同的是,原生字符串需要在字符串表示前加一个小写的r,其字符串中的\不被解释为转义字符。(建议)
string类型,即字符串类型,如果其没有\可以使用,如果有\其会把\翻译为转义字符,那就需要\,较为繁琐。
import re
regex = re.compile('[0-9]{6}')
match = regex.search('432700wxm')
if match:
print(type(match))
# 待匹配的文本
print(match.string)
# 待匹配的正则表达式
print(match.re)
# 待匹配文本的起始位置
print(match.pos)
# 待匹配文本的结束位置
print(match.endpos)
# 匹配的字符串
print(match.group(0))
# 匹配的字符串在原字符串中的起始位置
print(match.start())
# 匹配的字符串在原字符串中的结束位置
print(match.end())
# (起始位置,结束位置)
print(match.span())
输出结果:
432700wxm
re.compile('[0-9]{6}')
0
9
432700
0
6
(0, 6)
注意,可能此函数能匹配多个字符串,但是只返回第一个匹配的对象,并且是match对象,故也可调用match对象的相关属性和方法。
import re
# 匹配邮政编码
match = re.search(r'[1-9]\d{5}', 'WUST 430070')
# 首先看是否为空 不为空才调用相关函数
if match:
# match.group()用于在输入序列字符串中查找与所需模式匹配的子序列
print(match)
print(match.group(0))
注意其为从一个字符串的开始位置起匹配,所以如果开始位置没有相匹配的结果,其为空,所以在调用时,也是需要先判断是否为空。
import re
# 匹配邮政编码
match = re.match(r'[1-9]\d{5}', '430070 WUST')
# 首先看是否为空 不为空才调用相关函数
if match:
# match.group()用于在输入序列字符串中查找与所需模式匹配的子序列
print(match)
print(match.group(0))
import re
# 匹配邮政编码
match = re.findall(r'[1-9]\d{5}', '430070 WUST 432700')
# 首先看是否为空 不为空才调用相关函数
if match:
# 由于re.findall()返回的是列表类型 而不是match类型 故注意区分
print(match)
import re
# 匹配邮政编码
match = re.split(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
# 由于re.split()返回的是列表类型 而不是match类型 故注意区分
print(match)
import re
# 匹配邮政编码
match = re.split(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261', maxsplit=2)
# 首先看是否为空 不为空才调用相关函数
if match:
# 由于re.split()返回的是列表类型 而不是match类型 故注意区分
print(match)
import re
# 匹配邮政编码
match = re.finditer(r'[1-9]\d{5}', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
for i in match:
print(i.group(0))
import re
# 匹配邮政编码
match = re.sub(r'[1-9]\d{5}', '123', '430070 WUST 432700 BIT 354261')
# 首先看是否为空 不为空才调用相关函数
if match:
print(match)
import re
# 匹配邮政编码
match = re.sub(r'[1-9]\d{5}', '123', '430070 WUST 432700 BIT 354261', 2)
# 首先看是否为空 不为空才调用相关函数
if match:
print(match)
注意正则表达式的表示和正则表达式对象不同,我们参数pattern只是正则表达式的表示,而通过re.compile()后的对象regex是正则表达式的对象。
所以,我们也可以先将其表示转化为对象,然后调用对象的方法,其方法和上述六个一样使用奥!
叮咚,讲完啦!