ul元素中的多行破坏了我的正则表达式模式

问题描述 投票:0回答:1

实时示例:https://regexr.com/4rblr

源标记:

<xf:macro name="breadcrumbs" arg-breadcrumbs="!" arg-navTree="!" arg-selectedNavEntry="{{ null }}" arg-variant="">
    <xf:if contentcheck="true">
        <ul class="p-breadcrumbs {{ $variant ? 'p-breadcrumbs--' . $variant : '' }}"
            itemscope itemtype="https://schema.org/BreadcrumbList">
        <xf:contentcheck>
            <xf:set var="$position" value="{{ 0 }}" />

            <xf:set var="$rootBreadcrumb" value="{$navTree.{$xf.options.rootBreadcrumb}}" />
            <xf:if is="$rootBreadcrumb AND $rootBreadcrumb.href != $xf.uri">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$rootBreadcrumb.href}"
                    arg-value="{$rootBreadcrumb.title}" />
            </xf:if>

            <xf:if is="$selectedNavEntry && $selectedNavEntry.href && $selectedNavEntry.href != $xf.uri && $selectedNavEntry.href != $rootBreadcrumb.href">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$selectedNavEntry.href}"
                    arg-value="{$selectedNavEntry.title}" />
            </xf:if>
            <xf:foreach loop="$breadcrumbs" value="$breadcrumb" if="$breadcrumb.href != $xf.uri">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$breadcrumb.href}"
                    arg-value="{$breadcrumb.value}" />
            </xf:foreach>

        </xf:contentcheck>
        </ul>
    </xf:if>
</xf:macro>

我正在尝试通过正则表达式获取ul.p-breadcrumbs元素。我可以使用ok后抓住ul和everything

<p.*class.p-breadcrumbs(.*[\s]*)*

而且我可以选择结束标记,并带有

<\/ul>

但是将它们放在一起根本不起作用:

<ul.*class=.p-breadcrumbs(.*[\s]*)*<\/ul>

我遵循了这个答案:https://www.regextester.com/93456

但是它不适用于多行内容。如果您将该示例换行并输入更多内容,则会破坏解决方案。在我尝试解决最后问题的过程中感谢所有指针!

regex pattern-matching regex-group multiline regex-greedy
1个回答
0
投票

我作为一个正则表达式新手,通过摆弄自己将其固定。第一组需要一个?符号,我不知道为什么,除了它以某种方式使匹配“惰性”并且没有抓住太多字符。

解决方案更新为:

© www.soinside.com 2019 - 2024. All rights reserved.