如何获取第一个预料匹配元素

How to get first preg match elements

提问人:lolalola 提问时间:6/15/2023 更新时间:6/15/2023 访问量:24

问:

我需要用 preg_match_all() 提取所有 [ANY_TEXT-pb] 块。

我的代码:

$content = 'START Text1 [news-block] text2 [title1-pb] text3 text4 [title2-pb] text5 END';
preg_match_all('/\[(.*?)pb\]/si', $content, $codes);
print_r($codes[0]);

我需要得到什么:

Array
(
    [0] => [title1-pb]
    [1] => [title2-pb]
)

我现在得到的:

Array
(
    [0] => [news-block] text2 [title1-pb]
    [1] => [title2-pb]
)

如何检测来自同一块的第一个“[”元素?看起来现在这个 preg 从所有字符串中首先取“[”。

preg-match preg-match-all

评论


答:

0赞 The fourth bird 6/15/2023 #1

在查看所需结果时,不应使用否定字符类交叉匹配方括号。

仅对于匹配项,您不需要捕获组,因此可以省略括号:

\[[^][]*pb\]

观看正则表达式演示