一行中连续多于一个空格替换成横线正则表达式如何写啊

一行中连续多于一个空格替换成横线正则表达式如何写啊

比如
hello        chinaunix
替换成
hello------chinaunix
正则表达式如何写啊。
s/(\w+)\s\s+(\w+)/$1------$2/
s/\s+/------/g


QUOTE:
原帖由 biginner 于 2007-11-13 14:47 发表
s/\s+/------/g

应该是s/\s/-/g 吧。这样才是有多少个空格就变成多少个-
use strict;
use warnings;
open (OUT,">D:\\SRC\\perl\\My_OUT_File.txt") or die "open error!";
my $string;
while($string= <OUT>){
        chomp($string);
        if($string=~s/\s+/------/g)
        {
                print "$string";
                }
}
close(OUT);


按照1楼和2楼的正则,替换后文件为空!上面的代码错在哪里啊?

倒。。你读文件的符号写错了。是< 不是>  你那是生成一个新的文件。当然为空了。。。。
哈哈哈,楼上的正解,俺刚写perl,给你扔鲜花了
需要一个空白苻对应一个"-"时是
"应该是s/\s/-/g 吧。这样才是有多少个空格就变成多少个-",


QUOTE:
原帖由 amorer 于 2008-1-16 15:54 发表
需要一个空白苻对应一个"-"时是
"应该是s/\s/-/g 吧。这样才是有多少个空格就变成多少个-",

这样不如用tr.
正则的话 s/(\s+)/'-' x length($1)/eg


QUOTE:
原帖由 amorer 于 2008-1-16 15:54 发表
需要一个空白苻对应一个"-"时是
"应该是s/\s/-/g 吧。这样才是有多少个空格就变成多少个-",

正解