【问题标题】:Regex match inside html tag (not capture, just match)html标签内的正则表达式匹配(不捕获,只是匹配)
【发布时间】:2017-04-23 18:17:42
【问题描述】:

这是字符串:<sup>test</sup>
而我使用的正则表达式:(\([\w+\-*\/]+?\)|(?!<)\w+(?<!>))

为什么它匹配所有suptestsup
我想我已经使用了的负前瞻,所以我认为它不会赶上,因为在它之前有''

我想要的只是匹配'test',不匹配整个东西并捕获'test'

请帮忙

【问题讨论】:

  • 在 PHP 中,您想要使用正则表达式执行的操作很容易通过 (*SKIP)(*FAIL) - <[^<>]+>(*SKIP)(*F)|\w+ 完成。此外,您似乎已经交换了前瞻和后视。
  • 使用xml/html解析器

标签: php regex pcre


【解决方案1】:

假设内容在>< 之间,您可以简单地使用这个正则表达式:(?<=>)[^<]+

Demo

说明

[^<]+< 之外的任何字符

(?<=>) 前面是>

注意

如果您不想匹配换行符或回车符,请改用(?<=>)[^<\r\n]+Here 是一个演示。

保持简单;)

【讨论】:

    【解决方案2】:

    你需要匹配<.>内容之间的内容

    &lt;sup&gt;test&lt;/sup&gt;

    正则表达式:<.>(.+?)+?>

    根据您想要查看的精确程度,您必须调整搜索模式,但这取决于您自己的逻辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2015-08-05
      • 2015-03-31
      • 2014-08-29
      • 1970-01-01
      相关资源
      最近更新 更多