用于在HTML文件中查找类的正则表达式

时间:2017-08-18 14:48:55

标签: html regex

我需要搜索一堆HTML文件,以查找应用程序中使用类名的位置。

Ex1:应该匹配以下两者:

<div class="something else field">Foo</div>
<span class="field">Bar</span>

Ex2:不匹配

<div class="baseball-field baz">Baz</div>

我需要一个模式来查找我的文件中的类名

我尝试的是: /class(?=field)/

但这不起作用,我不确定如何在搜索中考虑其他可能的角色。

更新

我试过:class.*(?=field),适用于Ex1但不适用于2

2 个答案:

答案 0 :(得分:1)

您的正则表达式几乎是正确的,但您想要在正则表达式检查class="field"时搜索classfield

所以,你可以改用这个正则表达式:

class(?=="field")

<强> Regex demo

此外,不确定您使用的是哪种工具/语言,但请考虑使用html解析器或改为使用xpath / xquery。

更新:由于您更新了问题,我在此处提供了答案的更新。你可以改用这个正则表达式:

class(?=="(?:field|.*?\sfield|field\s.*?)")

<强> Working demo

顺便说一句,如果你想合并上面的替换,你可以使用:

class(?=="(?:(?:.*?\s)?field(?:\s.*?)?)")

您可以清除上面的正则表达式,将非捕获组移除到

class(?=="((.*?\s)?field(\s.*?)?)")

答案 1 :(得分:0)

接受的答案很接近,但缺少四分之一的重要案例:

  1. class="field"
  2. class="foo 字段"
  3. class="字段栏"
  4. class="foo field bar"

对于上述每种情况,这里的 RegExp 为真,但如果 'field' 类旁边不是空格或引号,则为假:

class(?=="(?:field|.*?\sfield|field\s.*?|.*?\sfield\s.*?)")

看到一个 updated Demo