求一正则表达式,急!

求一正则表达式,急!

希望将如下文本中花括弧中的空格删掉,其它保持不变。(下面是一行)
ov_sdffr  I43[8:0]  ( {D_4d[7:0],  Avg_HL_d,  D_3d[7:0] },  net234[0:8],  net172,  { D_2d[8:1],  net104}, net50 );

花括弧中的空格个数不限,可能是两个也可能是三个,四个。

请高手帮忙,谢谢!
啥都用正则。。。
不用正则表达式,把整个string split到array中,再判断有没有{,
然后用.命令拼起来也可以,太麻烦。

最好一个正则表达式替换搞定。
来吧
我也是学ic的

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
while(<DATA>){
        s/(\s+(?=[^{}]*}))//g;
        print;
                }
__DATA__
ov_sdffr  I43[8:0]  ( {D_4d[7:0],  Avg_HL_d,  D_3d[7:0] },  net234[0:8],  net172,  { D_2d[8:1],  net104}, net50 );

运行结果

QUOTE:
ov_sdffr  I43[8:0]  ( {D_4d[7:0],Avg_HL_d,D_3d[7:0]},  net234[0:8],  net172,  {D_2d[8:1],net104}, net50 );



QUOTE:
原帖由 churchmice 于 2008-12-11 13:15 发表
来吧
我也是学ic的

#!/usr/bin/perl
use strict;
use warnings;
while(){
        s/(\s+(?=[^{}]*}))//g;
        print;
                }
__DATA__
ov_sdffr  I43[8:0]  ( {D_4d[7:0],  Avg_HL_d,  D_3d[7:0] },  net234[0: ...

感激不尽!!
兄弟啊!

不过请教一下,?=[^{}]*}是什么意思?不懂列。
[^{}]*}是非括弧的零个或者若干个后面是}
就是匹配一个}的意思
?=[^{}]*}
这一段用来保证替换发生在{}内


QUOTE:
原帖由 每日一瓜 于 2008-12-11 12:13 发表
最好一个正则表达式替换搞定。

最好是根本不需要搞这个。。。


QUOTE:
原帖由 churchmice 于 2008-12-11 13:15 发表
来吧
我也是学ic的

#!/usr/bin/perl
use strict;
use warnings;
while(){
        s/(\s+(?=[^{}]*}))//g;

pretty cool
thank you very much!!!
你是真正的高手!


QUOTE:
原帖由 churchmice 于 2008-12-11 13:15 发表
来吧
我也是学ic的

#!/usr/bin/perl
use strict;
use warnings;
while(){
        s/(\s+(?=[^{}]*}))//g;
        print;
                }
__DATA__
ov_sdffr  I43[8:0]  ( {D_4d[7:0],  Avg_HL_d,  D_3d[7:0] },  net234[0: ...

好代码,温习一下