gpt4 book ai didi

php - 正则表达式的最大长度是多少?

转载 作者:行者123 更新时间:2023-12-04 00:08:22 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is the longest regular expression you have seen [closed]

(3 个回答)


7年前关闭。




我想知道:正则表达式(本身)是否有某种限制?
我不是指如何缩短字符串长度,而是指正则表达式本身。

在一个数组中有几百个值,我尝试从中构建正则表达式(目前只有这一半是 600+ 个字符),但还有更多。

所以我的正则表达式将来可能会有 1,000 甚至更多的长度。
它只是受到 PHP String 长度限制的限制还是有其他东西在起作用?

最佳答案

编辑:正如@Jonny 5 指出的那样,我的测试存在缺陷。但是,正确答案是 32767,或者如果您看到我的答案的第二位,则为 64k。

我刚刚使用以下方法在本地机器上对其进行了测试:

$str = str_repeat('a',  256*1024);
$subject = "";
$pattern = '/^' . $str . '/';
preg_match($pattern, $subject, $matches);

我得到了:

Warning: preg_match(): Compilation failed: regular expression is too large at offset 262145



事实上,如果你愿意,你可以有更大的。查看来源,我找到了 this :
/* The value of LINK_SIZE determines the number of bytes used to store links
as offsets within the compiled regex. The default is 2, which allows for
compiled patterns up to 64K long. This covers the vast majority of cases.
However, PCRE can also be compiled to use 3 or 4 bytes instead. This allows
for longer patterns in extreme cases. On systems that support it,
"configure" can be used to override this default. */
#ifndef LINK_SIZE
#define LINK_SIZE 2
#endif

所以如果你想从源代码编译,把自己敲出来。

关于php - 正则表达式的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310999/

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