概述
m = firstre.match(str) if m: # Do something m = secondre.match(str) if m: # Do something else m = thirdre.match(str) if m: # Do something different from both
除了丑陋之外,这个代码与所有正则表达式相匹配,即使它匹配其中一个(比如firstre),这是低效的.我试着用:
elif m = secondre.match(str)
但是我知道if语句中不允许赋值.
有没有一种优雅的方式来实现我想要的?
def doit( s ): # with some side-effect on a a = [] def f1( s,m ): a.append( 1 ) print 'f1',a,s,m def f2( s,m ): a.append( 2 ) print 'f2',m def f3( s,m ): a.append( 3 ) print 'f3',m re1 = re.compile( 'one' ) re2 = re.compile( 'two' ) re3 = re.compile( 'three' ) func_re_list = ( ( f1,re1 ),( f2,re2 ),( f3,re3 ),) for myfunc,myre in func_re_list: m = myre.match( s ) if m: myfunc( s,m ) break doit( 'one' ) doit( 'two' ) doit( 'three' )
总结
以上是编程之家为你收集整理的如何在Python中搜索正则表达式匹配?全部内容,希望文章能够帮你解决如何在Python中搜索正则表达式匹配?所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧