当前位置: 首页 > 编程笔记 >

PHP中preg_match函数正则匹配的字符串长度问题

芮念
2023-03-14
本文向大家介绍PHP中preg_match函数正则匹配的字符串长度问题,包括了PHP中preg_match函数正则匹配的字符串长度问题的使用技巧和注意事项,需要的朋友参考一下

项目中,用preg_match正则提取目标内容,死活有问题,代码测得死去活来。

后来怀疑PHP 的preg_match有字符串长度限制,果然,发现“pcre.backtrack_limit ”的值默认只设了100000。

解决办法:ini_set('pcre.backtrack_limit', 999999999);

注:这个参数在php 5.2.0版本之后可用。

另外说说关于:pcre.recursion_limit

pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。

也可以通过修改配置来限制:ini_set('pcre.recursion_limit', 99999);

实际项目应用中,最好也对内存进行限定设置:ini_set('memory_limit', '64M'); , 这样就比较稳妥妥嘎。

 类似资料:
  • 本文向大家介绍PHP中preg_match正则匹配中的/u、/i、/s含义,包括了PHP中preg_match正则匹配中的/u、/i、/s含义的使用技巧和注意事项,需要的朋友参考一下 PHP中preg_match正则匹配的/u /i  /s是什么意思 /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象) /

  • 本文向大家介绍Python正则表达式匹配字符串中的数字,包括了Python正则表达式匹配字符串中的数字的使用技巧和注意事项,需要的朋友参考一下 1.使用“\d+”匹配全数字 代码: 结果: ['479', '501', '870', '209', '213', '650'] 但是上述这种方式也会引入非纯数据,例子如下: 结果: ['479', '501', '870', '209', '213',

  • 问题内容: 我想匹配一个15位数字(作为较大的正则表达式字符串的一部分)。现在,我有 但我觉得必须有一种更清洁的方法来做到这一点。 问题答案: 如果您正则表达式语言是Perl兼容的:。 在不知道要使用此代码段的外部上下文的情况下,很难说出如何处理边缘(因此您不会意外地抓住多余的数字)。最终的上下文无关解决方案是这样的: 您可以将其放在任何正则表达式的中间,它将匹配(并且仅匹配)一个精确的15位数字

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 问题内容: 我的代码: 输出: 我知道的 : “一个?” 代表零个或一次出现的字符“ a”。 Java API说: matcher.start()返回上一个匹配项的起始索引。 matcher.end()返回匹配的最后一个字符后的偏移量。 matcher.group()返回与上一个匹配项匹配的输入子序列。对于具有输入序列s的匹配器m,表达式m.group()和s.substring(m.start(