如何改写PHP正则表达式,降低回溯并优化固化分组效率?

2026-03-30 08:350阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1901个文字,预计阅读时间需要8分钟。

如何改写PHP正则表达式,降低回溯并优化固化分组效率?

首先查看问题。字符串:`script123456/script`复制代码如下:php$code='$str=\'script123456/script\';';正则表达式如下:php$regex1='%script.+%/%';$regex2='%script.+?%/%';$regex3='%script(?:\\?:(?!/script))%';

先来看下问题。

字符串
复制代码 代码如下:
$str = '<script>123456</script>';

正则表达式为
复制代码 代码如下:
$strRegex1 = '%<script>.+<\/script>%';
$strRegex2 = '%<script>.+?<\/script>%';
$strRegex3 = '%<script>(?:(?!<\/script>).)+<\/script>%';

这三个正则,分别会造成几次回溯呢??
答案:
复制代码 代码如下:
$strRegex1 = '%<script>.+<\/script>%'; //9次,记得区别转义符号。
阅读全文

本文共计1901个文字,预计阅读时间需要8分钟。

如何改写PHP正则表达式,降低回溯并优化固化分组效率?

首先查看问题。字符串:`script123456/script`复制代码如下:php$code='$str=\'script123456/script\';';正则表达式如下:php$regex1='%script.+%/%';$regex2='%script.+?%/%';$regex3='%script(?:\\?:(?!/script))%';

先来看下问题。

字符串
复制代码 代码如下:
$str = '<script>123456</script>';

正则表达式为
复制代码 代码如下:
$strRegex1 = '%<script>.+<\/script>%';
$strRegex2 = '%<script>.+?<\/script>%';
$strRegex3 = '%<script>(?:(?!<\/script>).)+<\/script>%';

这三个正则,分别会造成几次回溯呢??
答案:
复制代码 代码如下:
$strRegex1 = '%<script>.+<\/script>%'; //9次,记得区别转义符号。
阅读全文