黑马程序员技术交流社区

标题: 怎么用正则表达式提取下面<div>...</div>中的内容,里面有... [打印本页]

作者: wdj_student    时间: 2013-3-24 17:58
标题: 怎么用正则表达式提取下面<div>...</div>中的内容,里面有...

  1. <div id="abc">
  2.     <p>  随着在伊拉克和阿富汗的激烈战斗宣告结束,美国空军(同海军、陆军和海军陆战队一起)正在从利用空中力量打击恐怖分子和非正规军,转向他们所谓的“大型战争”。不那么谨慎的空军规划者将自己当前的工作描述为目标是研发能够“轰炸北京”的制胜技术。</p>

  3.     <p>  这是过去20年美国空中力量应用方式的一个大转变。自GPS(全球定位系统)智能炸弹和瞄准吊舱在20世纪90年代引入之后,轰炸机飞行员们仅仅担任着炸弹运送驾驶员的角色。</p>

  4.     <p>  瞄准吊舱包含前视红外成像系统和电视摄像机,能使飞行员在6300米的高度清晰看到地面情况。吊舱上还有为激光制导导弹服务的激光指示器,以及能够使飞行员为联合直接攻击弹药(JDAM)获取坐标的激光测距仪。</p>

  5.     <p>  飞行员能够安全地处于大部分防空火力的打击范围之外,并且能够实际观察地面战斗的进展情况,甚至为地面部队充当空中观察员。而且,这些新性能使飞行员更容易发现目标,并且利用高精度激光制导导弹或联合直接攻击弹药对其实施打击。尽管轰炸机仍然从地面控制中心获取目标信息,以向友军提供近距空中支援,现在他们也可以在没有友军地面部队的区域自己寻找目标。</p>

  6.     <p>  联合直接攻击弹药研发于20世纪90年代,正赶上在1999年科索沃战争期间开始服役,而且取得巨大成功。使用这种炸弹事实上减少了投掷炸弹的数量和轰炸机的出动次数。目前正投入巨大努力利用所有这些新技术打击一个像中国那样咄咄逼人的对手,或是伊朗、朝鲜这两个更加好斗但装备较差的敌国。</p>

  7.     <p>  与此同时,美国建立了一个大型智能炸弹武器库。</p>
  8. </div>
复制代码
写一个正则表达式,用来提取里面的内容,谢谢了

作者: 胡志超    时间: 2013-3-24 18:28
这里主要是防止贪婪模式
<div id="abc">.*?</div>

作者: 曾玉锋    时间: 2013-3-24 18:32
首先,有点不明白你的意思哈,你是要提取包括标签的内容,还是不包括标签的内容。
如果不包括标签的内容:document.getElementById("abc").innerText;可以得到你想要的
如果包括标签的内容:document.getElementById("abc").innerHTML;可以得到你想要的。
作者: wdj_student    时间: 2013-3-24 18:32
胡志超 发表于 2013-3-24 18:28
这里主要是防止贪婪模式
.*?

这样不对,因为这段文章里面有很多换行,标签和空格等
作者: wdj_student    时间: 2013-3-24 18:36
曾玉锋 发表于 2013-3-24 18:32
首先,有点不明白你的意思哈,你是要提取包括标签的内容,还是不包括标签的内容。
如果不包括标签的内容:d ...

用正则表达式怎么提取,因为我要用C#提取出来赋值给一个字符串变量
作者: 邓建军    时间: 2013-3-24 19:52
<script>
onload=function(){
aaa=document.getElementById("abc")
bbb=aaa.innerHTML
}
//现在变量bbb就是你想要的东西,用正则表达式太麻烦
</script>
作者: wdj_student    时间: 2013-3-24 19:55
邓建军 发表于 2013-3-24 19:52
onload=function(){
aaa=document.getElementById("abc")
bbb=aaa.innerHTML

那怎样在C#中获得bbb的内容
作者: 曾玉锋    时间: 2013-3-24 21:47
wdj_student 发表于 2013-3-24 18:36
用正则表达式怎么提取,因为我要用C#提取出来赋值给一个字符串变量

你的意思是把所有p标签里面的内容分别提取出来赋值给字符串数组么?还有是在哪里提取,是后台代码,还是用js提取?
作者: 邓建军    时间: 2013-3-24 22:01
直接使用就行了
作者: wdj_student    时间: 2013-3-25 11:37
曾玉锋 发表于 2013-3-24 21:47
你的意思是把所有p标签里面的内容分别提取出来赋值给字符串数组么?还有是在哪里提取,是后台代码,还是 ...

把div中的所有内容,包括P标签,都当成是字符串作为一个整体提取出来提取出来  <div id="abc">整体</div>
,提取整体,但是因为里面有很多换行,标签,所以不知道怎么写正则表达式匹配,要是没有换行的话,正则表达式很好写
作者: 曾玉锋    时间: 2013-3-25 14:00
抱歉哈,我还是不明白你是要做什么,下面我给一种c#中的正则写法,和js中的正则写法

C#中:
            string str = "<div id=.....afefevd name=dafafa  >abdf<p>dafa</p>...dfafa     <br/> \r\nafadfafadfafe</div>";
            Match mc = Regex.Match(str,@"^<div[\s\S]+?<\/div>$");
            Console.WriteLine(mc.Value);
            Console.ReadKey();
js中:
           <body>
  <script type="text/javascript">
     function getContent()
   {
   
    var content=document.getElementById("div1").innerHTML;
    alert(content);/*输出取得的标签体中包括标签名在内的所有内容*/
    alert(content.match(/<[pP].*\s*>.+?<\/[Pp].*\s*>/g));/*只取所有的<p></p>标签*/
    alert(content.match(/[\s\S]+/));/*取得标签体中包括标签在内的所有内容*/
   }
   
  </script>
  <div id="div1">
   <p id="p1">我是中国人</p><br/><br/>

   <p>我爱中国</p>
  </div>
  <input type="button" value="按钮">
</body>





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2