gpt4 book ai didi

python - [Python] : Python re. 长字符串行的搜索速度优化

转载 作者:行者123 更新时间:2023-11-30 23:30:56 28 4
gpt4 key购买 nike

我只想问如何加快 python 上的 re.search 速度。
我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究:

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分钟或更短吗?根据此处其他人的反馈,将这一长行拆分为字符串列表不会对执行时间产生任何重大影响。任何想法都将不胜感激。提前致谢!

最佳答案

re.search 已经逐个字符地进行,以 .* 开头的模式仅意味着它将始终匹配并且每个字符大字符串的 可以作为候选...您需要改进正则表达式,或使用 re.match 而不是 re.search

另外 - 我相信您在错误的地方使用了 ^ ,它可以表示换行符的开始,(在这种情况下,您需要传递多行标志 re.MULTILINE 到编译器/正则表达式)或者在字符集中使用时表示“不”。

您应该将正则表达式更改为如下所示:

r'string [^=]*=.*'

这就是说,查找单词“string”,后跟一个空格,然后是任意数量的不是 = 的字符,然后是 = ,然后是任何内容。另外 - 您可能需要使用 + 而不是 *,因为 * 也可以表示 0 个匹配,其中 + 需要至少 1 个字符。

但是如果您没有更多信息 - 很难判断到底需要什么。

关于python - [Python] : Python re. 长字符串行的搜索速度优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20236775/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com