免费注册 查看新帖 |

Chinaunix

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

大家好,这段文本怎么用正则表达式处理啊,没整过去 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-07 17:06 |只看该作者 |倒序浏览
下面是文件内容

###1234
aaa= 北京 #123456
bbb= 6688 ## 4677

ccc = 沈阳467

我想得到的文本是
aaa= 北京
bbb= 6688
ccc = 沈阳467

还是我昨天发的那个处理ini文件的延续

论坛徽章:
0
2 [报告]
发表于 2007-09-07 17:11 |只看该作者
open (FH, 'C:\final\test\test.ini') or die "aaa";
while(<FH>)
{
   chomp();
   next if(($_ =~ /^\s*$/) || ($_ =~ /^#/));
   ($a) = $_ =~ /^([^#]+)#.*$/;
   print "$a\n";
}
close FH;

这样做不行啊,
C:\final\test>perl test2.pl
aaa= 北京
bbb= 6688


ccc = 沈阳467
整丢了

论坛徽章:
0
3 [报告]
发表于 2007-09-07 17:19 |只看该作者
open (FH, 'C:\final\test\test.ini') or die "aaa";
while(<FH>)
{
   chomp();
   next if(($_ =~ /^\s*$/) || ($_ =~ /^#/));
   if(/#/)
   {
      ($a) = $_ =~ /^([^#]+)#.*$/;
      print "$a\n";
   }
   else
   {
              print "$_\n";
   }
}
close FH;

上面的可以,可是我想用一个正则就解决问题,能行吗?

论坛徽章:
0
4 [报告]
发表于 2007-09-07 17:36 |只看该作者
  1. #!/usr/bin/perl
  2. open (FH,"1.txt");
  3. while(<FH>){
  4. $_=~s/\#.*//g;
  5. print "$_","\n";
  6. }
  7. close FH;
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-09-07 17:54 |只看该作者
要是光处理LZ的情况的话,只要用 $_=~s/(.*?)#(.*)/$1/;    把#后面的去掉就可以了

论坛徽章:
0
6 [报告]
发表于 2007-09-07 18:16 |只看该作者
真高,好用!为啥我用$_=~s/(.+)#(.*)/$1/;不行呢?以前有的网友就用.*?,我一直以为.*?应该和.+等价呢!哪位网友能帮忙解释一下它们之间的区别吗?先谢谢了!

论坛徽章:
0
7 [报告]
发表于 2007-09-07 18:24 |只看该作者
原帖由 zhangkeyijian 于 2007-9-7 17:36 发表
#!/usr/bin/perl
open (FH,"1.txt");
while(){
$_=~s/\#.*//g;
print "$_","\n";
}
close FH;


zhangkeyijian朋友的也好用,能解释一下为啥用\#吗?我觉得这种用法很好,就是不理解

论坛徽章:
0
8 [报告]
发表于 2007-09-07 18:33 |只看该作者
我试了
$_=~s/#.*//g;
也好用
不加g也好用啊
$_=~s/#.*//;也好用,迷糊了。我学的太浅了

$_=~s/\#.*//g;
不理解,$_=~s/(.+)#(.*)/$1/;也没理解,哪位热心的网友帮忙解释一下吧!!真不好理解

[ 本帖最后由 zhouhaiming 于 2007-9-7 18:37 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-09-08 12:26 |只看该作者

回复 #2 zhouhaiming 的帖子

改成这样也行

($a) = $_ =~ /^([^#]+)#?.*$/;

论坛徽章:
0
10 [报告]
发表于 2007-09-08 13:32 |只看该作者
朋友?不是表示它前面的字符重复0次或1次吗?不理解,哪位热心的朋友能解释一下吗?天天盼着呢,急等求解!这几种解决方案都解释解释!先谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP