re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 在一个字符串的开始位置匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表的形式返回全部能匹配的子串
re.split() 将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
regex = re.compile(pattern,flags=0)
此时的regex是一个正则表达式
例:
content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……' regex = re.compile('w*ow*') y = regex.match(content) print(y) print(type(y)) print(y.group()) print(y.span()) # <_sre.SRE_Match object; span=(0, 5), match='Hello'> # <class '_sre.SRE_Match'> # Hello # (0, 5)
re.search(pattern,string,flags=0)
pattern 正则表达式的字符串或原生字符串表示 string 带匹配的字符串 flags 正则表达式使用时的控制标记
flags的常用标记:
re.I re.IGNORECASE 忽略正则表达式的大小写,[A-Z]能够匹配小写字符 re.M re.MULTLINE 正则表达式中的^操作符能够将给定字符串的每行当做匹配开始 re.S re.DOTALL 正则表达式中的.操作符能够匹配所有字符,默认匹配除 外的所有字符
例:
1 import re 2 match1 = re.search(r'[1-9]d{5}','BIT 100081 TSU100084') 3 if match1: 4 print(match1.group(0)) 5 6 #结果:100081
re.match(pattern,string,flags=0)
例:
1 import re 2 match2 = re.match(r'[1-9]d{5}','BIT 100081') 3 if match2: 4 print(match2.group(0)) 5 6 #print(match2.group(0)),注意,如果这里不直接判断re.match()返回的对象是否为空,会报错, 7 #因为这里的match2并没有从这个字符串的开始部分匹配到目标字符串,所以返回的match2对象没有group这个参数 1 #对上面的代码进行修改 2 match3 = re.match(r'[1-9]d{5}','100081 BIT') 3 if match3: 4 print(match3.group(0)) 5 6 #输出:'100081'
re.findall(pattern,string,flags=0)
例:
1 import re 2 ls = re.findall(r'[1-9]d{5}','BIT100081 CLS100084') 3 print(ls)#['100081','100042'],将所有匹配的输出 4 for i in ls: 5 print(i) 6 #100081 7 #100084
re.split(pattern,string,maxsplit,flags=0)
例:
# maxsplit最大分割数,剩余部分作为最后一个元素输出 1 import re 2 m = re.finditer(r'[1-9]d{5}','BIT100081 TSU100084') 3 #re.finditer返回的是迭代类型 4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10> 5 for i in m: 6 print(i) 7 #输出: 8 #<re.Match object; span=(3, 9), match='100081'> 9 #<re.Match object; span=(13, 19), match='100084'> 10 #正确的输出格式 11 for m in re.finditer(r'[1-9]d{5}','BIT100081 TSU100084'): 12 if(m): 13 print(m.group(0)) 14 #100081 15 #100084
re.finditer(pattern,string,maxsplit,flags=0)
例:
1 import re 2 m = re.finditer(r'[1-9]d{5}','BIT100081 TSU100084') 3 #re.finditer返回的是迭代类型 4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10> 5 for i in m: 6 print(i) 7 #输出: 8 #<re.Match object; span=(3, 9), match='100081'> 9 #<re.Match object; span=(13, 19), match='100084'> 10 #正确的输出格式 11 for m in re.finditer(r'[1-9]d{5}','BIT100081 TSU100084'): 12 if(m): 13 print(m.group(0)) 14 #100081 15 #100084
re.sub(pattern,repl,string,count=0,flags=0)
例:
# repl 替换匹配字符串的字符串 # count 匹配的最大替换次数 1 import re 2 print(re.sub(r'[1-9]d{5}',':zipcode','BIT100081 TSU100084')) 3 #BIT:zipcode TSU:zipcode 4 print(re.sub(r'[1-9]d{5}',':zipcode','BIT100081 TSU100084',count=1)) 5 #BIT:zipcode TSU100084