免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2309 | 回复: 3
打印 上一主题 下一主题

一个正则表达式的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-09 13:00 |只看该作者 |倒序浏览

  1. $_=$myecho;
  2. s/<div\s*class=\"editor_text\">(.*?)<\/div>/$1/;
  3. print $_;
复制代码


想找出页面里的这个html标记里的内容
怎么实验都不行

$myecho内容为

  1. <td class="editor_colornormal" onClick="discuzcode('forecolor', 'PaleTurquoise')
  2. " unselectable="on" onMouseOver="colorContext(this, 'mouseover')" onMouseOut="co
  3. lorContext(this, 'mouseout')"><div style="background-color: PaleTurquoise" unsel
  4. ectable="on"></div></td>
  5. <td class="editor_colornormal" onClick="discuzcode('forecolor', 'LightBlue')" un
  6. selectable="on" onMouseOver="colorContext(this, 'mouseover')" onMouseOut="colorC
  7. ontext(this, 'mouseout')"><div style="background-color: LightBlue" unselectable=
  8. "on"></div></td>
  9. <td class="editor_colornormal" onClick="discuzcode('forecolor', 'Plum')" unselec
  10. table="on" onMouseOver="colorContext(this, 'mouseover')" onMouseOut="colorContex
  11. t(this, 'mouseout')"><div style="background-color: Plum" unselectable="on"></div
  12. ></td>
  13. <td class="editor_colornormal" onClick="discuzcode('forecolor', 'White')" unsele
  14. ctable="on" onMouseOver="colorContext(this, 'mouseover')" onMouseOut="colorConte
  15. xt(this, 'mouseout')"><div style="background-color: White" unselectable="on"></d
  16. iv></td>
  17. </tr><tr>
  18. <div class="editor_text">
  19. <textarea name="message" rows="10" cols="60" style="width:99%; height:250px;font
  20. -size:14px;font-family:Arial;padding:5px;" id="posteditor_textarea" onSelect="ja
  21. vascript: storeCaret(this);" onClick="javascript: storeCaret(this);" onKeyUp="ja
  22. vascript:storeCaret(this);" onKeyDown="ctlent(event);" tabindex="100"></br>
  23. -------- Forwarded Messages --------</br>
  24. </br>
  25. </br><div><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin:
  26. 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
  27. From: &quot;test&quot; [email]test@extmail.org[/email] </br>
  28. To: [email]testyou@111.com[/email] </br>
  29. </br>

  30. HOME = /home/domains/extmail.org/test<br>loginTime = 1192118532<br>OPTIONS = <br
  31. >mailQuota = 5242880S<br>IPaddr = 192.168.1.2<br>Nosameip = 1<br>User = test@ext
  32. mail.org<br>MAILDIR = /home/domains/extmail.org/test/Maildir/


  33. </blockquote></div></br>

  34. </textarea></div>
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-10-09 13:15 |只看该作者
s///是替换用的,你要找出这个标记不行
你用
  1. /<div\s*class=\"editor_text\">(.*?)<\/div>/ and print $1;
复制代码

不过结果还不是你要的,结果大概是
  1. <textarea name="message" rows="10" cols="60" style="width:99%; height:250px;font
  2. -size:14px;font-family:Arial;padding:5px;" id="posteditor_textarea" onSelect="ja
  3. vascript: storeCaret(this);" onClick="javascript: storeCaret(this);" onKeyUp="ja
  4. vascript:storeCaret(this);" onKeyDown="ctlent(event);" tabindex="100"></br>
  5. -------- Forwarded Messages --------</br>
  6. </br>
  7. </br><div><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin:
  8. 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
  9. From: &quot;test&quot; [email]test@extmail.org[/email] </br>
  10. To: [email]testyou@111.com[/email] </br>
  11. </br>

  12. HOME = /home/domains/extmail.org/test<br>loginTime = 1192118532<br>OPTIONS = <br
  13. >mailQuota = 5242880S<br>IPaddr = 192.168.1.2<br>Nosameip = 1<br>User = test@ext
  14. mail.org<br>MAILDIR = /home/domains/extmail.org/test/Maildir/


  15. </blockquote></div></br>

  16. </textarea>
复制代码

因为正则表达式是贪婪的,你还得改下匹配模式,进行最小匹配

论坛徽章:
0
3 [报告]
发表于 2007-10-09 13:16 |只看该作者
可能是因为有换行把,"."一般情况下是不匹配换行的,需要加上s修饰符
s/<div\s*class=\"editor_text\">(.*?)<\/div>/$1/s;

论坛徽章:
0
4 [报告]
发表于 2007-10-09 13:25 |只看该作者
谢谢楼上2位,解决啦~~~

的确是需要作为单行处理就是s修饰,另外就是贪婪模式

非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP