求一条c# 正则表达式,来获取HTML标签的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一条c# 正则表达式,来获取HTML标签的内容相关的知识,希望对你有一定的参考价值。
比如:<div>我要的内容,<p>里面有其他标签和中文的</p>,我要的内容</div>
要获取div里面的内容,正则表达式该如何写呢?求教
(?<=<div>)[^><]*(?=</div>)|(?<=<div>)[^><]*(?=<p>)|(?<=</p>)[^><]*(?=</div>)|(?<=</p>)[^><]*(?=<p>)
如果完全与你的格式相同的话那就简单了.. - -就是只有一个<p>的情况..
Regex r=new Regex(@"<div>(?<1>[^><]*)<p>[\s\S]*?</p>(?<2>[^><]*)</div>")
r.Replace(文本,"$1$2")追问
(?[^>[^><]*)是什么意思呢,1和2要填哪些文本?
追答1和2是组名- -
下面的r.Replace(文本,"$1$2") 这个是使用捕捉到的组来替换...
你也可以换个组名... 比如
Regex r=new Regex(@"(?[^>[^>")
r.Replace(文本,"$我是组名1$我是组名2")
非纯数字的组名要用括起来- -
r.Replace会返回一个替换后的字符串,你看着处理,
我这里是把两个内容给连在一起了,,
(?[^>[^><]*) , 这2个表达式把1和2都替换掉之后,这2个表达式的作用是什么呢?
追答如果不分组的话这个正则表达式是这样: [^>
分组就是 (?正则)的格式
这2个表达式的作用就是把整个正则来分组.
(?[^>[^>
这个正则, 组1是和 之间的, 不包含尖括号的内容
组2是
和之间的, 不包含尖括号的内容,
分组之后可以在代码里利用组名来获得匹配到的内容
你也可以 Match m=r.Match(你的文本) , 来匹配 ,然后
while(m.Success)
//m.Groups[1]
//m.Groups[2]
// 用这俩来获得这次匹配得到的1,2两个组的内容, 也就是你要的内容了
m=m.NextMatch();
一是得到Div中的内容
二是删除带有<P>标签的内容追问
得到Div中的内容的正则表达式怎样写呢?
参考技术B 如果是通用的话用正则是没法解析的,你可以用htmlagilitypack这个开源组件把HTML转化成XML,这样就很好解析了。这个组件的项目在codeplex,网址就不发了,会被百度吃掉。google找下就有了求一段PHP的正则 我要匹配文本内所有的</h1>后的内容
<div class="aaa">
<h1>abc</h1>ccc</div>
我去要取得ccc处的内容
</h1>.*?<
以上是关于求一条c# 正则表达式,来获取HTML标签的内容的主要内容,如果未能解决你的问题,请参考以下文章