这是一个简单的问题:
如何指定一个正则表达式,它可以多次用于多个匹配字符串?我可能用词不对,但我会试着展示一些代码。在
我有这个正则表达式:
regex = compile(r'(?=(%s))')
在for循环中,我将尝试将必须匹配的字符串与我为正则表达式指定的字符串匹配,以便在每次迭代时,我都可以更改匹配的字符串,它将尝试匹配它。在
这有可能吗,我能做点什么吗
^{pr2}$在代码中,还是必须重新编译正则表达式才能匹配新字符串?在
更多说明: 我想这样做:
re.findall('(?=(%s))' %myMatchString, mySearchString)
但由于myMatchString在循环的每次迭代中都会发生变化,所以我希望这样做,以便能够匹配新字符串:
regex = re.compile(r'(?=(%s))')
regex.findall( myMatchString, mySearchString)
谢谢你的阅读
好吧,如果我明白你说的,你只想写:
这将对字符串应用匹配项,因为字符串列表中有字符串的次数相同,而正则表达式只编译了一次。在
啊啊。。。但你不需要正则表达式:
^{pr2}$或者如果你真的想用re:
然后回答你的问题,不,你不能将目标字符串编译成正则表达式,但只能相反。编译regex时,要做的是将实际的regexp转换为自动机的内部表示形式。您可能想阅读NFA和{a2}的课程
re.compile
的重点是明确声明您将一次又一次地重复使用同一模式,并希望避免任何可能需要的编译。在因为您所做的是而不是必须使用相同的模式,那么您最好让
re
系统缓存模式(它缓存n
多个-但记不清具体有多少个),每次只需重新使用re.findall(...)
/任何正则表达式。在相关问题 更多 >
编程相关推荐