【问题标题】:Regular expression to get span tag [duplicate]获取跨度标签的正则表达式[重复]
【发布时间】:2014-07-24 14:58:24
【问题描述】:

请问匹配html标签的正则表达式规则是什么

<span id="id1" class="class1" attribute="attribute1">Test</span>

与标签 SPAN 匹配,无论其中的属性。

我现有的规则是这样的,但不起作用。

/(<span [^>]*>)>/s

【问题讨论】:

    标签: regex


    【解决方案1】:
    /<span[^>]*>[^>]*<\/span>/
    

    【讨论】:

    • 如果 span 包含内部标签则失败。
    【解决方案2】:

    看这里Regex for Html Tags

    试试这个

    <span[^>]*>[\s\S]+<\/span>
    

    Regex Demo


    O/P:

    【讨论】:

    【解决方案3】:

    大卫,(&lt;span [^&gt;]*&gt;)&gt; 的原因是你有一个小错字。

    你看,那个表达式试图匹配 两个 关闭&gt;:仔细查看末尾&gt;)&gt;。例如,它将匹配 &lt;span hey there&gt;&gt; 但不匹配 &lt;span hey there&gt;

    要匹配起始跨度,请确保您只有一个 &gt;。

    关于使用正则表达式匹配 html 的所有免责声明,这个正则表达式可以:

    <span[^>]*>
    

    如果您有时期望SPAN,请确保它不区分大小写。

    只要你有时间:额外的繁荣

    @DavidEhrmann 在评论中指出,上面的正则表达式将匹配&lt;spanner&gt;。如果你想让他开心,并确保跨度不仅仅是&lt;span&gt;,它总是在span之后包含一个空格,你可以使用:

    <span(?: [^>]*)?>
    

    但是,在我看来,这是不必要的繁荣。当我们用 regex 解析 html 时,我们总是知道我们使用的是一个粗糙的工具,并且我们依赖于输入的格式相当好。例如,使用上面修改过的正则表达式,我们仍然有上百万种方法可以匹配不正确的 html,例如:&lt;span classification&gt;

    怎么办?没有。了解您的工具,了解它们可以做什么,了解风险,并决定何时需要正则表达式以及何时需要 DOM 解析器。

    【讨论】:

    • 这也匹配 (不是真正的标签)。
    • @DavidEhrmann 当然,我知道。在使用正则表达式匹配 html 的上下文中,davidlee 正在尝试这样做,我正在尝试帮助修复他的表达式。 IMO 试图为 &lt;span...&gt; 制作更具体的正则表达式将充满错误(我们要允许什么:类?ids?样式?)
    • @DavidEhrmann 为了让你安心,添加了一个选项来避免&lt;spanner&gt;,应该davidlee也关心。 :) 干杯。
    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多