python 正则


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("\n"):
print i


for i in re.split(r"\n",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'}

 

posted on 2019-11-15 17:15  思此狂  阅读(195)  评论(0编辑  收藏  举报

导航