在python中使用正则表达式查找可嵌套字符串组
在网上看到一个小需求,需要用正则表达式来处理。原需求如下:
找出文本中包含”因为……所以”的句子,并以两个词为中心对齐输出前后3个字,中间全输出,如果“因为”和“所以”中间还存在“因为”“所以”,也要找出来,另算一行,输出格式为:
行号前面3个字*因为*全部&所以&后面3个字(标点符号算一个字)
2还不是*因为*这里好,&所以&没有人
实现方法如下:
#encoding:utf-8 importos importre defgetPairStriList(filename): pairStrList=[] textFile=open(filename,'r') pattern=re.compile(u'.{3}\u56e0\u4e3a.*\u6240\u4ee5.{3}')#u'\u56e0\u4e3a和u'\u6240\u4ee5'分别为“因为”和“所以”的utf8码 forlineintextFile: utfLine=line.decode('utf8') result=pattern.search(utfLine) whileresult: resultStr=result.group() pairStrList.append(resultStr) result=pattern.search(resultStr,2,len(resultStr)-2) #对每个字符串进行格式转换和拼接 foriinrange(len(pairStrList)): pairStrList[i]=pairStrList[i][:3]+pairStrList[i][3:5].replace(u'\u56e0\u4e3a',u'*\u56e0\u4e3a*',1)+pairStrList[i][5:] pairStrList[i]=pairStrList[i][:len(pairStrList[i])-5]+pairStrList[i][len(pairStrList[i])-5:].replace(u'\u6240\u4ee5',u'&\u6240\u4ee5&',1) pairStrList[i]=str(i+1)+''+pairStrList[i] returnpairStrList if__name__=='__main__': pairStrList=getPairStriList('test.txt') forstrinpairStrList: printstr
PS:下面看下python里使用正则表达式的组嵌套
由于组本身是一个完整的正则表达式,所以可以将组嵌套在其他组中,以构建更复杂的表达式。下面的例子,就是进行组嵌套的例子:
#python3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # importre deftest_patterns(text,patterns): """Givensourcetextandalistofpatterns,lookfor matchesforeachpatternwithinthetextandprint themtostdout. """ #Lookforeachpatterninthetextandprinttheresults forpattern,descinpatterns: print('{!r}({})\n'.format(pattern,desc)) print('{!r}'.format(text)) formatchinre.finditer(pattern,text): s=match.start() e=match.end() prefix=''*(s) print( '{}{!r}{}'.format(prefix, text[s:e], ''*(len(text)-e)), end='', ) print(match.groups()) ifmatch.groupdict(): print('{}{}'.format( ''*(len(text)-s), match.groupdict()), ) print() return
例子:
#python3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # fromre_test_patterns_groupsimporttest_patterns test_patterns( 'abbaabbba', [(r'a((a*)(b*))','afollowedby0-naand0-nb')], )
结果输出如下:
'a((a*)(b*))'(afollowedby0-naand0-nb) 'abbaabbba' 'abb'('bb','','bb') 'aabbb'('abbb','a','bbb') 'a'('','','')
总结
以上所述是小编给大家介绍的在python中使用正则表达式查找可嵌套字符串组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!