我将问一下如何加速对python的重新研究 我有一个很长的字符串行,长度为176861(即带有一些符号的字母数字字符),我使用此函数测试了此行以进行re.search:
def getExecTime():
start_time = time.time()
re.search(r'.*^string .*=.*', temp)
stop_time = time.time() - start_time
print "Execution time is : %s seconds" % stop_time
平均结果为~414秒(约6至7分钟)。 无论如何,我可以减少这个,大约在2分钟左右? 根据此处其他人的反馈,将此长行拆分为字符串列表不会对执行时间产生任何重大影响。 任何想法都非常感谢。提前谢谢!
答案 0 :(得分:3)
re.search
已逐字逐句,用.*
开始你的模式只意味着它将始终匹配,并且大字符串的每个字符都可以成为候选者。 ..您需要改进正则表达式,或使用re.match
代替re.search
。
另外 - 你在错误的地方使用^
我认为它可以表示换行的开始,(在这种情况下你需要将多行标志re.MULTILINE
传递给编译器/ regex)或者在字符集中使用时表示“not”。
您应该将正则表达式更改为以下内容:
r'string [^=]*=.*'
这就是说,找到单词“string”后面跟一个空格,然后查找任何数量的字符,然后是=
然后=
。另外 - 您可能希望使用+
代替*
,因为*
也可以表示0次匹配,其中+
至少需要1个字符。
但是如果没有关于你的最终信息 - 将很难确定究竟需要什么。