python-利用正则表达式匹配字符串
·
python正则表达式相关的模块是re
该模块有几个常用的方法
- re.compile() 生成一个正则对象
- re.match().group() 根据正则表达式匹配字符串,如果不是从字符串首位匹配的,则返回none,利用group()返回匹配的字符串
- re.search().group()根据正则表达式查找匹配字符串,返回第一个匹配的字符串,不限制必须是从首位匹配
- re.findall()根据正则表达式返回所有匹配的子字符串,用列表返回
- re.finditer() 同findall类似,只是返回一个迭代器(迭代器指可以通过循环遍历打印迭代器内容的对象,如元祖、列表等)
- re.sub()使用字符串去替换匹配正则中的值
- re.split()使用正则表达式中的字符去分割字符串,返回一个列表
调用举例
str4="hello....hello----hello------hello--hello----hello"
pat4=re.compile(r"([a-z]+)")#生成正则对象
obj = pat4.match(str4)#返回<re.Match object; span=(0, 5), match='hello'>,从首位匹配成功,返回一个对象
#使用group()返回re.match()的匹配对象
print(obj.group()) #打印hello
#因为从首位匹配正则失败,故返回None
print(pat4.match('0'+str4))
#re.search() 返回第一个匹配的子字符串,不限制必须是从首位匹配,返回hello
print(pat4.search(str4).group())
print(pat4.search('0'+str4).group())#返回hello
#re.findall() # 返回['hello', 'hello', 'hello', 'hello', 'hello', 'hello']
print(pat4.findall(str4))
#re.sub 替换#返回*....*----*------*--*----*,将re正则对象匹配的子字符串替换为sub的第一个参数
print(pat4.sub('*',str4))
#finditer生成匹配子字符串的迭代器
parttern = re.compile('([0-9]+)([a-z]+)')#正则对象有两个部分,一共是([0-9]+)([a-z]+),有两个部分[0-9]+、[a-z]+
data = parttern.finditer("010abb9992jack")
for tmp in data:#利用循环去访问正则迭代器,每个对象是正则表达式匹配的一个子字符串
print(tmp.group())#group()和group(0)返回匹配的整个子字符串 第一次循环返回010abb
print(tmp.group(1))#group(1)返回第一个()中的子正则匹配的内容,第一次循环010
print(tmp.group(2))#group(2)返回第二个()中的子正则匹配的内容,第一次循环abb
#利用迭代器的next打印每个迭代对象的值
print(next(data).group(1))#打印010
print(next(data).group(2))#打印jack 因为是第二个next迭代对象的第2个子正则表达式匹配的内容
#re.split()按照正则表达式的字符分割字符串
str = '010-111.232-qqq'
par = re.compile(r'[-.]')
print(par.split(str))#返回['010', '111', '232', 'qqq']
● group() 同group(0)就是匹配正则表达式整体结果
● group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分
更多推荐
所有评论(0)