日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式

發(fā)布時(shí)間:2025/3/12 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

你的問題是遞歸的…你知道嗎,忘了遞歸! = p它在PHP中不會很好用,如果沒有它,算法也很清楚.

function find_repeating_sequences($s)

{

$res = array();

while ($s) {

$i = 1; $pat = $s[0];

while (false !== strpos($s, $pat, $i)) {

$res[$pat] = 1;

// expand pattern and try again

$pat .= $s[$i++];

}

// move the string forward

$s = substr($s, 1);

}

return array_keys($res);

}

出于興趣,我用PHP寫了Tim’s answer:

function find_repeating_sequences_re($s)

{

$res = array();

preg_match_all('/(?=(.+).*\1)/', $s, $matches);

foreach ($matches[1] as $match) {

$length = strlen($match);

if ($length > 1) {

for ($i = 0; $i < $length; ++$i) {

for ($j = $i; $j < $length; ++$j) {

$res[substr($match, $i, $j - $i + 1)] = 1;

}

}

} else {

$res[$match] = 1;

}

}

return array_keys($res);

}

我讓他們在800字節(jié)隨機(jī)數(shù)據(jù)的小基準(zhǔn)測試中解決它:

$data = base64_encode(openssl_random_pseudo_bytes(600));

每個(gè)代碼運(yùn)行10輪,并測量執(zhí)行時(shí)間.結(jié)果?

Pure PHP - 0.014s (10 runs)

PCRE - 40.86s

當(dāng)你看到24k字節(jié)(或真正高于1k的任何東西)時(shí),它會變得更奇怪:

Pure PHP - 4.565s (10 runs)

PCRE - 0.232s

事實(shí)證明,正則表達(dá)式在1k個(gè)字符之后崩潰,因此$matches數(shù)組為空.這些是我的.ini設(shè)置:

pcre.backtrack_limit => 1000000 => 1000000

pcre.recursion_limit => 100000 => 100000

我不清楚在只有1k個(gè)字符之后是如何命中回溯或遞歸限制的.但即使這些設(shè)置以某種方式“修復(fù)”,結(jié)果仍然很明顯,PCRE似乎不是答案.

我想用C語寫這個(gè)會加速它,但我不確定程度如何.

更新

在hakre’s answer的幫助下,我整理了一個(gè)改進(jìn)版本,在優(yōu)化以下內(nèi)容后,性能提高了約18%:

>刪除外部循環(huán)中的substr()調(diào)用以前進(jìn)字符串指針;這是我之前的遞歸化身遺留下來的.

>將部分結(jié)果用作正緩存,以跳過內(nèi)部循環(huán)內(nèi)的strpos()調(diào)用.

在這里,它的一切榮耀(:

function find_repeating_sequences3($s)

{

$res = array();

$p = 0;

$len = strlen($s);

while ($p != $len) {

$pat = $s[$p]; $i = ++$p;

while ($i != $len) {

if (!isset($res[$pat])) {

if (false === strpos($s, $pat, $i)) {

break;

}

$res[$pat] = 1;

}

// expand pattern and try again

$pat .= $s[$i++];

}

}

return array_keys($res);

}

總結(jié)

以上是生活随笔為你收集整理的php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产第8页 | 国产中年熟女高潮大集合 | 色吟av| 国产理论片在线观看 | 亚洲天堂免费 | 亚洲高清无码久久久 | 牛牛影视一区二区三区 | 激情欧美在线 | 日韩视频一区 | 黄视频在线观看免费 | 国产一级一片免费播放放a 丁香六月色 | 日本黄色免费在线观看 | 边添小泬边狠狠躁视频 | 日本不卡高字幕在线2019 | 国产看黄网站 | 蜜桃视频一区二区 | 日韩新片王网 | 国产手机在线 | 牛人盗摄一区二区三区视频 | 国产精品国色综合久久 | 国产成人精品白浆久久69 | 中国一区二区视频 | 九九九在线观看 | 色欲欲www成人网站 老色鬼av | 成人黄色电影在线 | 一级黄色片在线免费观看 | 狠狠爱免费视频 | 超碰人人草 | 看污网站| 亚洲快播| 500部大龄熟乱视频 亚洲乱码精品 | 久久久久国产精品视频 | 免费成人av | 久久人人爽天天玩人人妻精品 | 国产对白羞辱绿帽vk | 久久久久久久久久久久久久久久久 | 美足av电影 | 欧美系列在线观看 | 麻豆传媒映画官网 | 97国产精品视频 | 97精品熟女少妇一区二区三区 | 91.xxx.高清在线 | 日韩sese | 黄色大片免费的 | 丰满双乳秘书被老板狂揉捏 | 天天拍夜夜拍 | 欧美大片一区二区 | 五月激情在线 | 91视频色版 | 人妻夜夜爽天天爽三区麻豆av网站 | 亚洲一区二区国产精品 | 裸体一区二区三区 | av国产成人 | 日韩少妇一区二区三区 | 天堂av2020| 在线观看一二三区 | 免费在线观看毛片视频 | 台湾少妇xxxx做受 | 污污网站免费在线观看 | 国产在线麻豆 | av中文字幕在线播放 | 一级肉体全黄毛片 | 北条麻妃一区二区三区免费 | 欧美日韩在线中文字幕 | 人人人人干 | 亚洲精品一区二区三区蜜桃 | 香蕉一区二区三区四区 | 中文字幕不卡一区 | 精品在线观看视频 | 久久久久毛片 | 久久久久久久久久成人 | 国产综合社区 | av色图在线 | 亚洲久久影院 | 久久精品色欲国产AV一区二区 | 超污巨黄的小短文 | 91丝袜一区二区三区 | 亚洲自拍偷拍区 | 欧美精品网址 | 寻找身体恐怖电影免费播放 | 九七影院在线观看免费观看电视 | 毛片aaaaaa| 超碰在线免费 | 伊人中文在线 | 欧美在线 | 亚洲 | 丝袜黄色片 | free性中国hd国语露脸 | 欧美www在线观看 | 日韩视频免费观看高清完整版 | av免费在线观看不卡 | 亚洲男同视频 | 波多野结衣久久 | 欧美91在线| 亚洲不卡一区二区三区 | 国产污污网站 | 美女色av | 非洲一级片 | 日韩一区二区三区精 | www.日日夜夜|