正则匹配html开始标签和结束标签
<div>我是标题</div>这是里我要提取的html<divclass="fsfsdfsdfsdfdsfsdfd"><div><h2>我是标题</h2></div>这是...
<div>我是标题</div>这是里我要提取的html<div class="fsfsdfsdfsdfdsfsdfd">
<div><h2>我是标题</h2></div>这是里我要提取的html<div class="fsfsdfsdfsdfdsfsdfd">
<div><b><h2>我是标题</h2></b></div>这是里我要提取的html<div class="fsfsdfsdfsdfdsfsdfd">
我是标题周围可能存在很多种html的组合,这里随便列了几个
我的正则是这样写的
[\\<[a-z\\d]*\\>]*我是标题[\\</[a-z\\d]*\\>]*(?<x>.*?)<div class="fsfsdfsdfsdfdsfsdfd">
但是[\\<[a-z\\d]*\\>]*只能匹配多个<div><div><div> 这样一样的<div><b><h2>就匹配不到
还有结束标签的匹配也是,我不知道哪里写错了,求高手指点 展开
<div><h2>我是标题</h2></div>这是里我要提取的html<div class="fsfsdfsdfsdfdsfsdfd">
<div><b><h2>我是标题</h2></b></div>这是里我要提取的html<div class="fsfsdfsdfsdfdsfsdfd">
我是标题周围可能存在很多种html的组合,这里随便列了几个
我的正则是这样写的
[\\<[a-z\\d]*\\>]*我是标题[\\</[a-z\\d]*\\>]*(?<x>.*?)<div class="fsfsdfsdfsdfdsfsdfd">
但是[\\<[a-z\\d]*\\>]*只能匹配多个<div><div><div> 这样一样的<div><b><h2>就匹配不到
还有结束标签的匹配也是,我不知道哪里写错了,求高手指点 展开
2015-10-29 · 知道合伙人软件行家
关注
展开全部
Html标签是支持嵌套的,怎么能够找到指定标签相对应的闭合标签是最重要的问题。
思路:先匹配最前面的起始标签,假设是div(<div),接着一旦遇到嵌套div,就“压入堆栈”,后面如果遇到div闭合标签了,就“弹出堆栈”。如果遇到闭合标签的时候,堆栈里面已经没有东西了,那么匹配结束,此结束标签为正确的闭合标签。
1、匹配任意闭合HTML标签的正则表达式
<(?<HtmlTag>[\w]+)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
2、如果只想匹配div标签,可以使用下面的正则表达式:
<(?<HtmlTag>div)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
3、如果想同时匹配多个HTML标签,可以使用下面的正则表达式
<(?<HtmlTag>(div|span|h1))[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
4、如果想匹配包含ID的标签,可以使用下面的正则表达式:
<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>["']?)footer(?(Quote)\k<Quote>)[^>]*?(/>|>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>)
展开全部
你的问题实在是没阐述明白,你是不是要取得“这是里我要提取的html”,试试下面的表达式
/(?:<(?:[a-z]*\d)>)*我是标题(?:<\/(?:[a-z]*\d)>)*(.*)<div class="fsfsdfsdfsdfdsfsdfd">/
/(?:<(?:[a-z]*\d)>)*我是标题(?:<\/(?:[a-z]*\d)>)*(.*)<div class="fsfsdfsdfsdfdsfsdfd">/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
***************************************************************************后面的,就和前面的一个道理
你的问题错的地方多着呢!!
[\\<[a-z\\d]*\\>]*我是标题,第一个[,不应该用[后直接用\,\就是转义符了,开始没特殊符号转义符\不能用。后面<[a-z\\d]*\\>,尖括号中的[a-z\\d],这里\\d不能用,要表示\,就最后放个\,\d,也不要用在方括号里,语法错误\d本来代表一位数字[0-9]。外面的*,用得不明确,意思说可以不匹配<div>了哟。还好你是贪婪模式,还能匹配个<div>
***************************************************************************后面的,就和前面的一个道理
就这么几句就能提取:
一、正则表达式:
<div>.*?</div>(.*?)<div
提取表达式 \1 或者 $1
提取【这是里我要提取的】用\n或者$n支持什么就用什么
二、正则表达式:
<div><h2>.*?</h2></div>(.*?)<div
提取表达式 \1 或者 $1
三、正则表达式:
<div><b><h2>.*?</h2></b></div>(.*?)<div
提取表达式 \1 或者 $1
你的问题错的地方多着呢!!
[\\<[a-z\\d]*\\>]*我是标题,第一个[,不应该用[后直接用\,\就是转义符了,开始没特殊符号转义符\不能用。后面<[a-z\\d]*\\>,尖括号中的[a-z\\d],这里\\d不能用,要表示\,就最后放个\,\d,也不要用在方括号里,语法错误\d本来代表一位数字[0-9]。外面的*,用得不明确,意思说可以不匹配<div>了哟。还好你是贪婪模式,还能匹配个<div>
***************************************************************************后面的,就和前面的一个道理
就这么几句就能提取:
一、正则表达式:
<div>.*?</div>(.*?)<div
提取表达式 \1 或者 $1
提取【这是里我要提取的】用\n或者$n支持什么就用什么
二、正则表达式:
<div><h2>.*?</h2></div>(.*?)<div
提取表达式 \1 或者 $1
三、正则表达式:
<div><b><h2>.*?</h2></b></div>(.*?)<div
提取表达式 \1 或者 $1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
***************************************************************************后面的,就和前面的一个道理
你的问题错的地方多着呢!!
[\\<[a-z\\d]*\\>]*我是标题,第一个[,不应该用[后直接用\,\就是转义符了,开始没特殊符号转义符\不能用。后面<[a-z\\d]*\\>,尖括号中的[a-z\\d],这里\\d不能用,要表示\,就最后放个\,\d,也不要用在方括号里,语法错误\d本来代表一位数字[0-9]。外面的*,用得不明确,意思说可以不匹配<div>了哟。还好你是贪婪模式,还能匹配个<div>
***************************************************************************后面的,就和前面的一个道理
就这么几句就能提取:
一、正则表达式:
<div>.*?</div>(.*?)<div
提取表达式 \1 或者 $1
提取【这是里我要提取的】用\n或者$n支持什么就用什么
二、正则表达式:
<div><h2>.*?</h2></div>(.*?)<div
提取表达式 \1 或者 $1
三、正则表达式:
<div><b><h2>.*?</h2></b></div>(.*?)<div
提取表达式 \1 或者 $1
你的问题错的地方多着呢!!
[\\<[a-z\\d]*\\>]*我是标题,第一个[,不应该用[后直接用\,\就是转义符了,开始没特殊符号转义符\不能用。后面<[a-z\\d]*\\>,尖括号中的[a-z\\d],这里\\d不能用,要表示\,就最后放个\,\d,也不要用在方括号里,语法错误\d本来代表一位数字[0-9]。外面的*,用得不明确,意思说可以不匹配<div>了哟。还好你是贪婪模式,还能匹配个<div>
***************************************************************************后面的,就和前面的一个道理
就这么几句就能提取:
一、正则表达式:
<div>.*?</div>(.*?)<div
提取表达式 \1 或者 $1
提取【这是里我要提取的】用\n或者$n支持什么就用什么
二、正则表达式:
<div><h2>.*?</h2></div>(.*?)<div
提取表达式 \1 或者 $1
三、正则表达式:
<div><b><h2>.*?</h2></b></div>(.*?)<div
提取表达式 \1 或者 $1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询