import re
#re.match(pattern, string, flags=0)
#flag 标志位,常用的re.I 忽略大小写匹配
#re.findall(r"jink",text,re.I)
text='''
11helloworld22
nimenhaoma
shanxishengweinanshi
tangyanluhello
'''
# 查找一个匹配项
# search match fullmatch
# search 查找任意位置匹配项
# match 必须从字符串开头匹配
# fullmatch 整个字符串与正则完全匹配 #只有python3
print re.search(r".*hello.*",text).group() # 11helloworld22
print re.match(r"nimen.*",text,re.I) ## None
print(re.fullmatch(r"hello","hello",re.I).group())
#output hello
# 查找多个匹配项
# findall 返回一个列表
# finditer 返回一个迭代器
print re.findall(r".*hello.*",text) #['11helloworld22', 'tangyanluhello']
print re.finditer(r".*hello.*",text) #<callable-iterator object at 0x0000000002F35FC8>
pattern=re.compile(r".*hello.*")
for i in pattern.findall(text):
print i
for i in pattern.finditer(text):
print i.group()
# 分割 split
for i in text.split("
"):
print i
for i in re.split(r"
",text):
print i
# str 本身支持split,支持不支持正则,
# 根据实际情况使用,以上两种输出情况一致。
#替换
#str 本身支持replace,如果指定替换次数N(第三个参数),则最多替换N个
name="jinkangkangello"
print name.replace("kang","wen") #jinwenwenello
print name.replace("kang","wen",1) #jinwenkangello
pattern=re.compile(r'kang')
#re.sub(pattern, repl, string, count=0, flags=0)
# repl 替换string 中被pattern 匹配的字符,count 表示最大替换次数
print re.sub(r'kang','wen',name) #jinwenwenello
print re.sub(r'kang','wen',name,1) #jinwenkangello
print pattern.sub('wen',name) #jinwenwenello
print pattern.sub('wen',name,1) #jinwenkangello
分组匹配 直接将匹配结果直接转为字典模式,方便使用。
res = re.search(r"(?P<name>k.*g$)",a).groupdict() print res #输出 {'name': 'kang'}