首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:匹配打开/关闭标记,它接受另一个具有相同名称的打开/关闭标记

Regex:匹配打开/关闭标记,它接受另一个具有相同名称的打开/关闭标记
EN

Stack Overflow用户
提问于 2014-05-22 06:17:17
回答 1查看 128关注 0票数 1

Regex粉丝们,嗨。在下面的代码中,有两个父标记(T1-4和T5-6)和一个子标记(T2-3)。

你怎么配T1-4?或者一般情况下,如何匹配父标记?

代码语言:javascript
复制
<?php
$subject = '

{{poo}}             # T1
    Hello

    {{poo}}         # T2
        Nested 1
    {{/poo}}        # T3

{{/poo}}            # T4


{{poo}}             # T5
    Bye
{{/poo}}            # T6



';

$p = '!{{(\w+)}}(.*){{/\1}}!s';     // matches T1-6, too greedy
$p = '!{{(\w+)}}(.*?){{/\1}}!s';    // matches T1-3, not what I want

$p = '`(?xs) # xtended

{{(\w+)}}

.*?
(?R)?       # currently working on this one...

{{/\1}}


`';



preg_replace_callback($p, function($match){
    var_dump($match);
}, $subject);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 09:16:29

这可能是你要找的东西:

代码语言:javascript
复制
$p = '`(?x)
{{(\w+)}}
# ( # you need probably this capture group later
(?>
    [^{]++
  |
    { (?!{)
  |
    {{ (?! /? \1 \b) # if needed you can add }} in the lookahead
  |
    (?R)
)*
# )
{{/\1}}
`';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23799129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档