python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快相关的知识,希望对你有一定的参考价值。

我有80几条正则,这80几条正则都比较复杂,长的有800多个字符,发现编译完这80几条正则需要5秒多,匹配替换的速度倒是挺快,现在就是想把编译的速度缩短,请问有什么方法可以快一点,或者说将正则转换为其他方式来匹配
ps:这些正则不能改,是由别人提供的,目的就是别人提供正则,然后输入文本,检测文本,并按正则替换成*号,现在就是正则的编译速度太慢,python 的re.compile

参考技术A 可以试一下用 google 的 re2 模块代替 python 内建的 re 模块!
http://blog.csdn.net/subtang/article/details/37831663

Python3中正则模块re.compilere.match及re.search函数

参考:https://www.jb51.net/article/141830.htm

官网:https://docs.python.org/3/library/re.html

 

re.compile() 函数

编译正则表达式模式,返回一个对象。可以把常用的正则表达式编译成正则表达式对象,方便后续调用及提高效率。

re.compile(pattern, flags=0)

    pattern 指定编译时的表达式字符串
    flags 编译标志位,用来修改正则表达式的匹配方式。支持 re.L|re.M 同时匹配

flags 标志位参数

re.I(re.IGNORECASE)
使匹配对大小写不敏感

re.L(re.LOCAL) 
做本地化识别(locale-aware)匹配

re.M(re.MULTILINE) 
多行匹配,影响 ^ 和 $

re.S(re.DOTALL)
使 . 匹配包括换行在内的所有字符

re.U(re.UNICODE)
根据Unicode字符集解析字符。这个标志影响 w, W, , B.

re.X(re.VERBOSE)
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

 

在python 3.7版本==》 pattern= re.compile(‘<psclass="s2">(.*?)</p>‘,RegexFlag.S)

__version__ = "2.2.1"

class RegexFlag(enum.IntFlag):
    ASCII = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
    IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
    LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
    UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"
    MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
    DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
    VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
    A = ASCII
    I = IGNORECASE
    L = LOCALE
    U = UNICODE
    M = MULTILINE
    S = DOTALL
    X = VERBOSE
    # sre extensions (experimental, dont rely on these)
    TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
    T = TEMPLATE
    DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
globals().update(RegexFlag.__members__)

# sre exception
error = sre_compile.error

 

 

 

 

 

import re
content = Citizen wang , always fall in love with neighbour,WANG
rr = re.compile(rwanw, re.I) # 不区分大小写
print(type(rr))
a = rr.findall(content)
print(type(a))
print(a)

 

以上是关于python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式re使用模块(match()search()和compile())

Python re模块 正则表达式之compile函数

python 中的 re.compile 函数(转)

Python3中正则模块re.compilere.match及re.search函数

python中,有关正则表达式re函数:compilematchsearchfindall

python正则表达式与re模块