如何使用perl正则表达式在模式匹配后提取后续单词?

时间:2016-02-17 16:50:03

标签: regex perl strawberry-perl

文件中的示例行:

Set

我想从多个文件中提取用户名

one two three uname whirlcano four five

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式捕获组来捕获用户名:

while (my $row = <$fh>) {
    chomp($row); # strip newline character

    # capture first group of word characters after uname and one or more spaces
    my ($username) = $row =~ m/uname\s+(\w+)/;
    ....
}

您可以将上面示例中的\s+更改为文件的分隔符,但通常在使用真实 CSV解析器解析CSV类型文件时优于正则表达式。 Text::CSV_XS就是一种流行的解析器。

有关在正则表达式中捕获组的详细信息,请参阅perldoc perlre

的“捕获组”部分