代码之家  ›  专栏  ›  技术社区  ›  klochner

Ruby中是否有String.scan的Perl等价物?

  •  4
  • klochner  · 技术社区  · 17 年前

    我想用Perl实现这一点:

    >> "foo bar baz".scan /(\w+)/
    => [["foo"], ["bar"], ["baz"]]
    

    有什么建议吗?

    3 回复  |  直到 11 年前
        1
  •  13
  •   Brad Gilbert    17 年前

    这基本上是一样的。

    my @elem = "foo bar baz" =~ /(\w+)/g
    

    还可以设置“默认标量”变量 $_

    $_ = "foo bar baz";
    my @elem = /(\w+)/g;
    

    看见 perldoc perlre


    如果只想将该字符串用作数组,可以使用 qw() .

    my @elem = qw"foo bar baz";
    

    看见 perldoc perlop ​ ​( Quote and Quote-like Operators ) .

        2
  •  3
  •   Chris Cleeland    17 年前

    此外,拆分,例如。,

    my $x = "foo bar baz";
    my @elem = split(' ', $x);
    

    my @elem = split(/\w+/, $x);
    

        3
  •  1
  •   robc    16 年前

    因此,String#scan的块形式的等价物是将regexp与while循环一起使用:

    while ("foo bar baz" =~ /(\w+)/) {
        my $word = $1;
        do_something_with($word);
    }