码迷,mamicode.com
首页 > 其他好文 > 详细

perl 匹配嵌套括号问题

时间:2016-07-09 15:00:39      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:

text:
(1+2(123+(888)3)ddf)wwww(sdf(sdfdsf)gggg)
Match:
1+2 123+ 888 3 ddf sdf sdfdsf gggg

匹配代码:

#!/usr/bin/perl
use strict;
use warnings;
use re eval;
my $str= (1+2(123+(888)3)ddf)wwww(sdf(sdfdsf)gggg);
my @arr;
my $re = qr/(?{local $a=0})(?>(?:([^()]+)(?{push @arr,$1})| 
#将匹配到得内容push到@arr
#固化分组,减少回朔。
\((?{$a++})|   
#遇到开括号$a+1
\)(?(?{$a!=0})(?{$a--})|       
#如果$a不等于0则遇到闭括号$a-1
(?!)))*)(?(?{$a!=0})(?!))/x; 
# 否则继续匹配,如果继续遇到$a不等于0 继续匹配到行尾
1 while($str =~ /\($re\)/g);
print join("\n",@arr);

 

perl 匹配嵌套括号问题

标签:

原文地址:http://www.cnblogs.com/mcshell/p/5655828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!