优化python正则表达式搜索

2024-04-23 06:04:56 发布

您现在位置:Python中文网/ 问答频道 /正文

代码

def search(self, arg1, arg2):
    global ipv4_regex, type_regex

    if isinstance(arg2, type_regex):
        text = re.search(arg2, arg1)
        if text:
            p = text.group()
            return len(p)
        else:
            return 0
    else:
        if arg2 in arg1:
            return len(arg2)
        else:
            return 0

我有一个python脚本,为了满足一个请求,这个函数被重新计算了大约452900次(通过使用pprofile分析代码找到这个值),以给出输出。你知道吗

关于函数的一些注释:

arg1 = string
arg2 = ith string/regex

基本上,arg2是一个regex/字符串长列表的ith实例,需要与arg1(对于一个请求arg1保持不变)匹配才能找到匹配的长度。你知道吗

我提出了这个函数,但是时间和CPU消耗正成为我的瓶颈。由于许多搜索操作,CPU很快就会变得很高。你知道吗

到目前为止我有什么想法

  1. 使用字典理解而不是建议的here
  2. 使用某种基于树的搜索,就像我们对字符串所做的那样。你知道吗

这两个想法都很简单,到目前为止,我还不能付诸行动。你知道吗

我无法控制arg2中的regex,因此regex优化在这里没有帮助。你知道吗

请建议,我正在寻找如何优化这个功能的想法?你知道吗

谢谢


Tags: 函数字符串代码textsearchstringlenreturn