正值表达式匹配html标签的属性值

正则表达式是做文本解析工作必不可少的技能。如Web服务器日志分析,网页前端开发等。很多高级文本编辑器都支持正则表达式的一个子集,熟练掌握正则表达式,经常能够使你的一些工作事半功倍。例如统计代码行数,只需一个正则就搞定。嵌套Html标签的匹配是正则表达式应用中一个比较难的话题,因为它涉及到的正则语法比较多,也比较难。因此也就更有研究的价值。

今天由于工作的需求,需要获取html标签的属性值,立即想到了正则表达式,标签如下:

<circle id="ap_test" cx="200" cy="2000" r="2" stroke="black" stroke-width="0" fill="red"/> <circle id="ap_test" cx="201" cy="2001" r="2" stroke="black" stroke-width="0" fill="red"/> <circle id="ap_test" cx="202" cy="2002" r="2" stroke="black" stroke-width="0" fill="red"/> <circle id="ap_test" cx="203" cy="2003" r="2" stroke="black" stroke-width="0" fill="red"/>

需要获取<circle />标签的cx、cy的属性值,想了一会写出了一个:

$circle是上面的circle标签的内容

preg_match_all('/<\s*circle\s+[^>]*?cx\s*=\s*(\'|\")(.*?)\\1[^>]*?cy\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $circle, $arr); var_dump($arr);

$arr[2]是cx的值 ,$arr[4]是cy的值.

下面给大家介绍下正则匹配闭合HTML标签(支持嵌套)

任何复杂的正则表达式都是由简单的子表达式组成的,要想写出复杂的正则来,一方面需要有化繁为简的功底,另外一方面,我们需要从正则引擎的角度去思考问题。关于正则引擎的原理,推荐《Mastering Regular Expression》中文名叫《精通正则表达式》。挺不错的一本书。

OK,先确定我们要解决的问题——从一段Html文本中找出特定id的标签的innerHTML。

这里面最大的难点就是,Html标签是支持嵌套的,怎么能够找到指定标签相对应的闭合标签呢?

我们可以这样想,先匹配最前面的起始标签,假设是div吧(<div),接着一旦遇到嵌套div,就“压入堆栈”,后面如果遇到div闭合标签了,就“弹出堆栈”。如果遇到闭合标签的时候,堆栈里面已经没有东西了,那么匹配结束,此结束标签为正确的闭合标签。

我之所以能够这样去思考,是因为我了解过正则的特性,我知道正则中的平衡组能够实现我刚才说的“堆栈”操作。所以,如果我们要编写复杂正则表达式,需要对正则的一些高级特性至少有所了解,这样我们思考问题才有个方向。

================================

匹配任意闭合HTML标签的正则表达式:

<(?<HtmlTag>[\w]+)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>

如果只想匹配div标签,可以使用下面的正则表达式:

<(?<HtmlTag>div)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>

是的,你可以把div修改成任意你想要匹配的HTML标签

如果想同时匹配多个HTML标签,可以使用下面的正则表达式:
<(?<HtmlTag>(div|span|h1))[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
你还可以继续添加更多要匹配的标签

如果想匹配包含ID的标签,可以使用下面的正则表达式:

<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>["']?)footer(?(Quote)\k<Quote>)[^>]*?(/>|>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>)

这个正则匹配任意id为footer的HTML标签

时间: 2024-09-11 06:18:49

正值表达式匹配html标签的属性值的相关文章

正值表达式匹配html标签的属性值_正则表达式

正则表达式是做文本解析工作必不可少的技能.如Web服务器日志分析,网页前端开发等.很多高级文本编辑器都支持正则表达式的一个子集,熟练掌握正则表达式,经常能够使你的一些工作事半功倍.例如统计代码行数,只需一个正则就搞定.嵌套Html标签的匹配是正则表达式应用中一个比较难的话题,因为它涉及到的正则语法比较多,也比较难.因此也就更有研究的价值. 今天由于工作的需求,需要获取html标签的属性值,立即想到了正则表达式,标签如下: <circle id="ap_test" cx="

javascript-Javascript获取有CSS动画的标签的属性值

问题描述 Javascript获取有CSS动画的标签的属性值 //CSS中的动画: @keyframes move{ 0% {left:0px;} 100% {left:100px;} } //CSS样式: .move1{ width:100px; height:100px; animation:move 1000ms; -webkit-animation:move 1000ms } //div标签: div id="1" class="move1" 或者 .mov

PHP正则匹配img及标签各属性值(匹配图片函数)

例  代码如下 复制代码 <?php   $ext = 'jpg|jpeg|gif|bmp|png';//罗列图片后缀从而实现多扩展名匹配 $str = '<p><img title="湛蓝天空" alt="湛蓝天空" onload="ResizeImage(this,860)" src="http://你的域名/uploads/allimg/131121/1-1311210925190-L.jpg"

js如何获取标签的属性值

代码形式如下: <a class="a0" id="xxoo">ggggggggggggg<span class="b0">hhhhhhhhhhhhhhhhhhhhhhhh</span></a> 想获取span标签的class属性值 获取的方法如下 : 以下是引用片段:document.getElementById("xxoo").getElementsByTagName(&qu

全面解析SEO中nofollow标签的属性作用

本文从五个知识点全面解析nofollow标签怎么用及nofollow标签写法:第一,nofollow是什么意思.第二,nofollow属性标签的用法.第三,rel nofollow的正确书写格式.第四,nofollow的应用领域.第五:什么是nofollow和noindex. 在分析之前先来说说新浪,网易两大门户博客对防止恶意滥发博客外链采用的nofollow标签写法,新浪博客nofollow以前存在过,但是现在我看到的并没有在博客里加上nofollow标签,但是网易博客现在确实是加了rel="

PHP用正则匹配form表单中所有元素的类型和属性值实例代码

前言 最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例.感兴趣的朋友们可以参考学习. 实例代码如下 假设页面 1.html 的网页源代码是: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>一个含有 form 表单

html属性-请问html 标签上的属性值怎么获取?

问题描述 请问html 标签上的属性值怎么获取? test 大神们!怎么能获取到 属性 abc 上的网址? 解决方案 通过正则表达示和js代码都可以的, 参考:http://m.blog.csdn.net/blog/mhmyqn/8205874 解决方案二: 用JQuery的话,很方便: <AAA id="tag" abc="www.baidu.com"> test </AAA> var url = $("#tag").a

java-后台获取input标签中的属性值,该怎么获取

问题描述 后台获取input标签中的属性值,该怎么获取 后台想通过JAVA获取到input中的isDraft的值是否为0 该怎么获取 <input type="button" value="创建问卷" name="sendBtn" id="sendBtn" class="butn" isDraft=0>; <input type="button" value="

强制解析html标签-如何强制页面解析HTML标签属性值里面的标签???求大神赐教,解析这个title里面的标签,谢谢!

问题描述 如何强制页面解析HTML标签属性值里面的标签???求大神赐教,解析这个title里面的标签,谢谢! <button id="emoji-id" type="button" class="btn btn-default emoji" title="<table border='1'><tr><th>Heading</th><th>AnotherHeading<