gpt4 book ai didi

PHP preg_match 匹配

转载 作者:行者123 更新时间:2023-12-02 22:00:29 25 4
gpt4 key购买 nike

我正在尝试从字符串中获取所有匹配项:

$string = '[RAND_15]d4trg[RAND_23]';

像这样使用 preg_match:

$match = array();
preg_match('#\[RAND_.*]#', $string, $match);

但是在 $match 数组之后看起来像这样:

Array ( [0] => [RAND_15]d4trg[RAND_23] )

我应该怎么做才能将两次出现作为 $match 数组中的 2 个单独元素?我想得到这样的结果:

$match[0] = [RAND_15];
$match[1] = [RAND_23];

最佳答案

使用...

$match = array();
preg_match_all('#\[RAND_.*?]#', $string, $match);

... 相反。 ? 修饰符将使模式变得“惰性”,匹配尽可能短的子字符串。如果没有它,模式将尝试覆盖可能的最大距离,并且从技术上讲,[RAND_15]d4trg[RAND_23] 确实匹配该模式。

另一种方法是限制字符集与否定字符类匹配:

$match = array();
preg_match_all('#\[RAND_[^]]*]#', $string, $match);

这样我们就不必将量词变成惰性量词,因为 [^]] 字符类将在第一个 ] 符号处停止匹配。

不过,要捕获所有匹配项,您应该使用 preg_match_all 而不是 preg_match。这是 demo说明差异。

关于PHP preg_match 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17029679/

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