我似乎不能让这件事起作用,我希望能得到一些帮助。
我正在尝试捕获特定div
的内容(请保存DOM talk,为了这个特定的目的,它并不真正发挥作用)。
问题是,如果在同一行中有另一个具有属性的div
,那么它似乎无法工作。如果<div
和class="myClass"
之间没有匹配,我试着只指定match,但我认为我做错了。
我还是被裁判弄糊涂了。
/<div(?!>).*?class="myClass".*?>(.*?)<\/div>/mi
(半)工作示例: http://regex101.com/r/cW0lW6
发布于 2014-01-15 14:51:44
试一试
/<div(?=\s)(?:(?!>).)+?class="myClass".*?>(.*?)<\/div>/si
发布于 2014-01-15 14:56:35
您不能用regex.html解析,因为不能被regex解析。Regex不是一个可以正确解析HTML的工具。
请参阅:RegEx匹配打开的标记,但XHTML自包含标记除外。
我建议使用QueryPath来解析PHP和HTML。它的语法与jQuery基本相同,只是在服务器端。
发布于 2014-01-15 15:02:01
您可以使用这个(简单的方法):
~<div[^>]+?class="myClass"[^>]*>(.*?)</div>~si
或者这个(如果你有很多属性的话,更有效的方法):
~<div(?>[^>c]++|\Bc|c(?!lass=))+class="myClass"[^>]*+>(.*?)</div>~si
请注意,如果div标记包含另一个div标记,则这些模式无法工作。
https://stackoverflow.com/questions/21149922
复制相似问题