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']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
● group() 同group(0)就是匹配正则表达式整体结果
● group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分