我似乎无法让这个工作,我希望得到一些帮助。
我正在尝试捕获特定div
的内容(请保存DOM说话,出于特定目的,它并没有真正发挥作用。)
问题是,如果在同一行上有另一个带有属性的div
,我似乎无法使其工作。如果>
和<div
之间没有class="myClass"
,我尝试仅指定匹配,但我认为我做错了。
我仍然对正则表达式感到困惑。
/<div(?!>).*?class="myClass".*?>(.*?)<\/div>/mi
(半)工作示例: http://regex101.com/r/cW0lW6
答案 0 :(得分:0)
尝试
/<div(?=\s)(?:(?!>).)+?class="myClass".*?>(.*?)<\/div>/si
答案 1 :(得分:0)
您无法使用正则表达式解析[X] HTML。因为HTML无法解析 正则表达式。正则表达式不是可用于正确解析HTML的工具。
请参阅:RegEx match open tags except XHTML self-contained tags
我建议使用QueryPath在PHP中解析XML和HTML。它与jQuery的语法基本相同,只是在服务器端。
答案 2 :(得分:-2)
您可以使用此(简单方法):
~<div[^>]+?class="myClass"[^>]*>(.*?)</div>~si
或者这个(如果你有很多属性,会更有效):
~<div(?>[^>c]++|\Bc|c(?!lass=))+class="myClass"[^>]*+>(.*?)</div>~si
请注意,如果div标记包含另一个div标记,则这些模式不起作用。