免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: longbow0
打印 上一主题 下一主题

求助:除去成对的括号 [复制链接]

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
11 [报告]
发表于 2011-02-21 16:33 |只看该作者
递归:
  1. my $foo = '(1,(2,(3,4)))';

  2. print "$foo => ";

  3. $foo =~ s/\(/\[/g;
  4. $foo =~ s/\)/\]/g;

  5. $foo =~ s/^\[/\(/g;
  6. $foo =~ s/\]$/\)/g;

  7. my @foo = eval $foo;

  8. my $flag = 0;

  9. @foo = format_array(@foo);

  10. print "(@foo)";

  11. sub format_array
  12. {
  13.         my @foo = @_;
  14.        
  15.         local $" = ",";
  16.        
  17.         for my $i (@foo)
  18.         {
  19.                 if(ref $i)
  20.                 {
  21.                         $flag++;
  22.                         if($flag == 1)
  23.                         {
  24.                                 $i = format_array(@$i);
  25.                         }
  26.                         else
  27.                         {
  28.                                 $i = "(".format_array(@$i).")";
  29.                         }
  30.                 }
  31.         }

  32.         return "@foo";
  33. }
复制代码
试了几个没问题,看有没有别的错误

论坛徽章:
1
丑牛
日期:2014-02-14 17:07:04
12 [报告]
发表于 2011-02-21 16:34 |只看该作者
回复 10# justlooks

谢谢了,我刚用的5.8,难怪执行出错

论坛徽章:
0
13 [报告]
发表于 2011-02-21 17:16 |只看该作者
  1. my $balance = qr/(\((?:[^()]++|(?-1))*+\))*/;
  2. my $innerRe = qr/(?:[^()]*?$balance)*/;
  3. while( <DATA> ){
  4.     chomp;
  5.     print;
  6.     if( s/^(\([^()]*?)\(($innerRe)\)/$1$2/ ){
  7.         print " => $_";
  8.     }
  9.     print "\n";
  10. }
  11. __DATA__
  12. (((1,2),3),4)
  13. ((1,2),(3,4))
  14. (1,(2,(3,4)))
  15. (((((1,2),3),4),(5,6)))
复制代码

论坛徽章:
0
14 [报告]
发表于 2011-02-23 23:40 |只看该作者
回复  ace_fei


    检查下perl的版本,这个是5.10的新特性
justlooks 发表于 2011-02-21 16:09


哪个新特性?我在perlre中也没找到。刚开始我以为是条件判断,后来发现似乎不是...

论坛徽章:
0
15 [报告]
发表于 2011-02-24 09:36 |只看该作者
:wink: 明明perlre里面就有说明。。。更新下你的PERLDOC版本吧。

论坛徽章:
0
16 [报告]
发表于 2011-04-30 02:04 |只看该作者
?1,递归
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP