正则表达式匹配 HTML 问题

汤姆克兰西八世 2011-03-02 03:38:53

<div id="endText">

<p>我国首次并购美飞机制造商(图<br />资料图片</p>
<p>商报消息 随着中国低空开放的信号越来越强,国内的航空制造企业开始提前布局。记者从中国航空工业集团公司(以下简称“中航工业”)获悉,该公司旗下通用飞机公司已与全球第二大通用飞机制造商美国西锐飞机工业公司签订全资收购协议。这是中国航空工业史上首次对欧美发达国家飞机整机制造企业的收购案。</p>

</div>



求正则匹配 id="endText" 的div标签之间的 HTML内容
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaodru 2011-03-02
  • 打赏
  • 举报
回复
C# code
MatchCollection mc = Regex.Matches(yourHtml,@"(?is)(?<=<div\s[^>]*?id=\x22endText\x22[^>]*>((?!</?div).)*?)<p[^>]*>.+?</p>");
foreach(Match m in mc)
{
m.Value;//就是你需要的
}
厉害
huangwenquan123 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wuyazhe 的回复:]
C# code
MatchCollection mc = Regex.Matches(yourHtml,@"(?is)(?<=<div\s[^>]*?id=\x22endText\x22[^>]*>((?!</?div).)*?)<p[^>]*>.+?</p>");
foreach(Match m in mc)
{
m.Value;//就是你需要的
}
[/Quote]强悍的逍遥 学习了!
兔子-顾问 2011-03-02
  • 打赏
  • 举报
回复
MatchCollection mc = Regex.Matches(yourHtml,@"(?is)(?<=<div\s[^>]*?id=\x22endText\x22[^>]*>((?!</?div).)*?)<p[^>]*>.+?</p>");
foreach(Match m in mc)
{
m.Value;//就是你需要的
}
兔子-顾问 2011-03-02
  • 打赏
  • 举报
回复
MatchCollection mc = Regex.Matches(yourHtml,@"(?is)(?<=<div\s[^>]*?id="endText"[^>]*>((?!</?div).)*?)<p[^>]*>.+?</p>");
foreach(Match m in mc)
{
m.Value;//就是你需要的
}
huangwenquan123 2011-03-02
  • 打赏
  • 举报
回复

string str = "<div id=\"endText\"><p>我国首次并购美飞机制造商(图<br />资料图片</p>"
+ "<span>商报消息span 随着中国低空开放的信号越来越强。</span><p>商报消息p 随着中国低空开放的信号越来越强。</p>"
+ "<div>商报消息div 随着中国低空开放的信号越来越强。</div></div>";
Regex reg = new Regex(@"(?is)<div[^>]*?id=""endText""[^>]*?>(.*?)</div>");
Regex reg1 = new Regex(@"<p>.*?</p>");
MatchCollection match = reg.Matches(str);
foreach (Match m in match)
{
foreach (Match mm in reg1.Matches(m.Groups[1].Value))
{
Response.Write(mm.Value + "<br/>");
}
}
//一句的写不来 等待大侠来解决
  • 打赏
  • 举报
回复
非常感谢大家的回答,如果我需要

正则匹配 id="endText" 的div标签之间的 标签为<p>的内容又该如何呢?

<div id="endText">

<p>我国首次并购美飞机制造商(图<br />资料图片</p>
<p>商报消息 随着中国低空开放的信号越来越强。</p>
<span>商报消息 随着中国低空开放的信号越来越强。</span>
<div>商报消息 随着中国低空开放的信号越来越强。</div>

</div>




在上面的HTML 中用正则匹配 出的内容为


<p>我国首次并购美飞机制造商(图<br />资料图片</p>
<p>商报消息 随着中国低空开放的信号越来越强。</p>


这样的正则该怎么写啊
wuyq11 2011-03-02
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"(?is)<div\s=id=""endText""[^>]*>(.*?)</div>");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
TextBox2.Text += m.Groups[1].Value + "\n";
}
兔子-顾问 2011-03-02
  • 打赏
  • 举报
回复
如果不存在嵌套。
(?is)<div[^>]*id="endText"[^>]*>(.*?)</div>
yalan 2011-03-02
  • 打赏
  • 举报
回复
来晚了~~~~~~~~

正则表达式很简单,LZ还是学习一下吧
正则表达式30分钟入门教程
huangwenquan123 2011-03-02
  • 打赏
  • 举报
回复
            string str = "<div id=\"endText\"><p>我国首次并购美飞机制造商(图<br  />资料图片</p><p>商报消息"
+"随着中国低空开放的信号越来越强,国内的航空制造企业开始提前布局。记者从中国航空工业集团公"
+"司(以下简称“中航工业”)获悉,该公司旗下通用飞机公司已与全球第二大通用飞机制造商美国西"
+"锐飞机工业公司签订全资收购协议。这是中国航空工业史上首次对欧美发达国家飞机整机制造企业的收购案。</p></div>";
Regex reg = new Regex(@"(?is)<div[^>]*?id=(['""\s]?)endText\1[^>]*?>(?<html>.*?)</div>");
MatchCollection match = reg.Matches(str);
foreach (Match m in match)
{
Response.Write(m.Groups["html"].Value + "<br/>");
}
huangwenquan123 2011-03-02
  • 打赏
  • 举报
回复
            string str = "<div id=\"endText\"><p>我国首次并购美飞机制造商(图<br  />资料图片</p><p>商报消息"
+"随着中国低空开放的信号越来越强,国内的航空制造企业开始提前布局。记者从中国航空工业集团公"
+"司(以下简称“中航工业”)获悉,该公司旗下通用飞机公司已与全球第二大通用飞机制造商美国西"
+"锐飞机工业公司签订全资收购协议。这是中国航空工业史上首次对欧美发达国家飞机整机制造企业的收购案。</p></div>";
Regex reg = new Regex(@"<div[^>]*?id=(['""\s])endText\1[^>]*?>(?<html>.*?)</div>");
MatchCollection match = reg.Matches(str);
foreach (Match m in match)
{
Response.Write(m.Groups["html"].Value + "<br/>");
}
gaoweiming1101 2011-03-02
  • 打赏
  • 举报
回复
(?is)<div[^>]*id="endText"[^>]*>([\s\S]*)</div>

取分组1
q107770540 2011-03-02
  • 打赏
  • 举报
回复
(?is)<div[^>]*id="endText"[^>]*>([\s\S]*)</div>

取分组1

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧