我需要搜索一堆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
答案 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)
接受的答案很接近,但缺少四分之一的重要案例:
对于上述每种情况,这里的 RegExp 为真,但如果 'field' 类旁边不是空格或引号,则为假:
class(?=="(?:field|.*?\sfield|field\s.*?|.*?\sfield\s.*?)")
看到一个 updated Demo。