perl正则小问题

zydscaline 2013-02-03 11:16:00
网上下的某小说TXT版本的,每章都有如下内容:
<MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=1 direction=up width=1 height=1 delay="1"><A href="http://www.taobar8.com">淘宝网女装</A> <A href="http://www.tmalsc.com">天猫淘宝商城</A> <A href="http://www.taohu8.com">淘宝网女装冬装外套</A> <A href="http://www.taobar8.com">www.taobar8.com</A>
....................省一部分......
<a href="http://www.pingjiatao.com/">www.pingjiatao.com</a> <A href="http://www.taohu8.com">www.taohu8.com</A> <A href="http://www.taohu8.com">淘宝网女装冬装新款</A> <A href="http://www.tmalsc.com">www.tmalsc.com</A> <A href="http://www.tmalsc.com">淘宝网女装冬款</A></marquee>

手机每次要翻几次屏才能接着看,就想给它替换了,因为其中间的内容会变,所以不适合用记事本自带的替换命令,就想到了PERL,试着
use Tie::File;
tie my @lines, 'Tie::File', 'd:/1.txt' or die "$!";
foreach ( @lines ) {
s/<.{1,100}>//>g;
}
untie @lines or die "$!";
发现其运行好象一次只替换一个适合条件的吧,运行五六次后只替换了部分,整个文件只少了几十K,很郁闷,发现其每个这样的段只少了一部分或者说几个字,换了个
<.*?> 的命令,OK了,但我不解的是,我以为 <.*?> 这个命令只会替换源码部分,就是<>里的文字,而类似 淘宝网女装冬装外套 这样的是不会被 替换的,但事实是它被替换了,求解释
...全文
69 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjs100901 2013-02-04
  • 打赏
  • 举报
回复
.匹配得太多了。 把你的正则表达式 <.{1,100}> 改为 <[^>]{1,100}>[^<]{1,100}</A> 试试

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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