gpt4 book ai didi

re.compile 中的 Python 正则表达式模式最大长度?

转载 作者:太空狗 更新时间:2023-10-30 00:06:42 29 4
gpt4 key购买 nike

我尝试在 Python 3 中使用 re.compile 编译一个大模式。

我尝试编译的模式由 500 个小词组成(我想从文本中删除它们)。问题是它在大约 18 个单词后停止了模式

Python 不会引发任何错误。

我做的是:

stoplist = map(lambda s: "\\b" + s + "\\b", stoplist)
stopstring = '|'.join(stoplist)
stopword_pattern = re.compile(stopstring)

停止字符串没问题(所有单词都在)但模式要短得多。它甚至会停在一个词的中间!

正则表达式模式是否有最大长度?

最佳答案

考虑这个例子:

import re
stop_list = map(lambda s: "\\b" + str(s) + "\\b", range(1000, 2000))
stopstring = "|".join(stop_list)
stopword_pattern = re.compile(stopstring)

如果你尝试打印图案,你会看到类似的东西

>>> print(stopword_pattern)
re.compile('\\b1000\\b|\\b1001\\b|\\b1002\\b|\\b1003\\b|\\b1004\\b|\\b1005\\b|\\b1006\\b|\\b1007\\b|\\b1008\\b|\\b1009\\b|\\b1010\\b|\\b1011\\b|\\b1012\\b|\\b1013\\b|\\b1014\\b|\\b1015\\b|\\b1016\\b|\\b1017\\b|\)

这似乎表明模式不完整。但是,这似乎只是 __repr__ 和/或 __str__ 方法对 re.compile 对象的限制。如果您尝试对模式的“缺失”部分进行匹配,您会发现它仍然成功:

>>> stopword_pattern.match("1999")
<_sre.SRE_Match object; span=(0,4), match='1999')

关于re.compile 中的 Python 正则表达式模式最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221835/

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