python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快相关的知识,希望对你有一定的参考价值。
我有80几条正则,这80几条正则都比较复杂,长的有800多个字符,发现编译完这80几条正则需要5秒多,匹配替换的速度倒是挺快,现在就是想把编译的速度缩短,请问有什么方法可以快一点,或者说将正则转换为其他方式来匹配
ps:这些正则不能改,是由别人提供的,目的就是别人提供正则,然后输入文本,检测文本,并按正则替换成*号,现在就是正则的编译速度太慢,python 的re.compile
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, don‘t 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(r‘wanw‘, re.I) # 不区分大小写 print(type(rr)) a = rr.findall(content) print(type(a)) print(a)
以上是关于python 正则表达式 re,compile速度慢 ,怎样可以使的re.compile的速度更快的主要内容,如果未能解决你的问题,请参考以下文章
python 正则表达式re使用模块(match()search()和compile())
Python3中正则模块re.compilere.match及re.search函数