【问题标题】:Anyway to clean the regex capture groups up?无论如何要清理正则表达式捕获组?
【发布时间】:2023-04-06 20:15:02
【问题描述】:

我正在尝试清理这个正则表达式捕获组,因为它对我来说正确捕获它是一个奇怪的返回 preg_match_all 奇怪,因为它是第一次使用 preg_match_all

测试代码:: http://ideone.com/7NnrI1

正则表达式

/(?=<!--\sBEGIN\s(.*?)\s-->(.*?)(?=<!--\sEND\s(.*?)\s-->))/s

返回

Array
(
[0] => Array
    (
        [0] => Array
            (
                [0] => 
                [1] => 0
            )

        [1] => Array
            (
                [0] => 
                [1] => 326
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [0] => switch_legend
                [1] => 11
            )

        [1] => Array
            (
                [0] => switch_default
                [1] => 337
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [0] => 
<ul id="picture_legend">
    <li><img src="{FORUM_NEW_IMG}" alt="{L_NEW_POSTS}" />{L_NEW_POSTS}</li>
    <li><img src="{FORUM_IMG}" alt="{L_NO_NEW_POSTS}" />{L_NO_NEW_POSTS}</li>
     <li><img src="{FORUM_LOCKED_IMG}" alt="{L_LOCKED}" />{L_LOCKED}</li>
</ul>

                [1] => 28
            )

        [1] => Array
            (
                [0] => 
<ul id="picture_legend">
    <li><img src="{FORUM_NEW_IMG}" alt="{L_NEW_POSTS}" />{L_NEW_POSTS}</li>
    <li><img src="{FORUM_IMG}" alt="{L_NO_NEW_POSTS}" />{L_NO_NEW_POSTS}</li>
     <li><img src="{FORUM_LOCKED_IMG}" alt="{L_LOCKED}" />{L_LOCKED}</li>
</ul>

                [1] => 355
            )

    )

[3] => Array
    (
        [0] => Array
            (
                [0] => switch_legend
                [1] => 308
            )

        [1] => Array
            (
                [0] => switch_default
                [1] => 635
            )

    )

)

预期回报

Array
(
[0] => Array
    (
        [0] => Array
            (
                [0] => 
                [1] => 0
            )
        [1] => Array
            (
                [0] => switch_legend
                [1] => 11
            )
        [2] => Array
            (
                [0] => 
<ul id="picture_legend">
    <li><img src="{FORUM_NEW_IMG}" alt="{L_NEW_POSTS}" />{L_NEW_POSTS}</li>
    <li><img src="{FORUM_IMG}" alt="{L_NO_NEW_POSTS}" />{L_NO_NEW_POSTS}</li>
     <li><img src="{FORUM_LOCKED_IMG}" alt="{L_LOCKED}" />{L_LOCKED}</li>
</ul>

                [1] => 28
            )
        [3] => Array
            (
                [0] => switch_legend
                [1] => 308
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [0] => 
                [1] => 326
            )
        [1] => Array
            (
                [0] => switch_default
                [1] => 337
            )
         [2] => Array
            (
                [0] => 
<ul id="picture_legend">
    <li><img src="{FORUM_NEW_IMG}" alt="{L_NEW_POSTS}" />{L_NEW_POSTS}</li>
    <li><img src="{FORUM_IMG}" alt="{L_NO_NEW_POSTS}" />{L_NO_NEW_POSTS}</li>
     <li><img src="{FORUM_LOCKED_IMG}" alt="{L_LOCKED}" />{L_LOCKED}</li>
</ul>

                [1] => 355
            )
        [3] => Array
            (
                [0] => switch_default
                [1] => 635
            )
    )

)

我需要什么

我希望从匹配项中清除数组,以便不是每次捕获的相同模式都在同一个数组中,而是每次开始捕获时都会添加到同一个数组中,就像在 Expected Return 中一样.

【问题讨论】:

  • 听起来像 PREG_SET_ORDER 就是你想要的。
  • 我是否将其添加到我的 preg_match_all 中的另一个标志中?
  • 是的,想通了,请发表您的答案,以便我可以很高兴地给您积分。

标签: php regex preg-match-all


【解决方案1】:

听起来像PREG_SET_ORDER 是你想要的。 ——马里奥

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多