正则表达式 - 查找没有特定属性的HTML标记

时间:2015-11-25 15:57:15

标签: regex

我正在尝试编写一个正则表达式来挑选出<button>个标签,这些标签上有没有谷歌分析标签。

<button.*analytics.*<\/button>解决了第一个问题。

虽然我正在尝试查找没有分析的按钮,但我遇到了相反情况的问题。

我有一个类似于<button class="some-class">Button Text</button>的字符串(不包含analytics-*属性),当我使用正则表达式进行搜索时,我需要通过它。

到目前为止,我已经尝试了<button(!?analytics).*<\/button>,但似乎没有效果......

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您可以尝试:

$ /xampp/php/php/./yii mycron
  

正则表达式不支持反向匹配的概念并非完全如此   真正。您可以使用负面外观来模仿此行为   Source

以下代码是负面的环顾:

<button *((?!analytics).)*<\/button>

它将匹配任何无法计算分析的内容。然后你只需要根据你的情况添加你应该在这个关键词之前和之后找到的内容来构建你的正则表达式: 关键词之前:

((?!analytics).)*

关键词之后:

<button *

Test

答案 1 :(得分:1)

我会使用这样的事实:在标签中,标签名称及其属性之间存在某种空间。

所以:

  • 没有属性的标签

    Date Time Flow (L/h) ... 6/10/15 05:19:05 -0.175148624605041 6/10/15 05:34:05 -0.170297042615798 ... 7/10/15 07:34:08 -0.033833540932291 7/10/15 07:49:08 -0.0256913011453011 ...

  • 带有属性的标签

    <[^[:space:]][[:space:]]*/?>

我不知道您使用哪种语言,我使用的是POSIX扩展正则表达式。

编辑:我在这里保持非常通用。如果您只想匹配按钮,则可以更具体。