如何在Perl中从同一行打印多个单词?

时间:2014-06-09 00:35:35

标签: regex perl

我已经使用这个Perl正则表达式脚本了一段时间了:

open DOC1, "<", "list.txt" or die $!;
open DOC2, "> list.xls";
while (my $lines = <DOC1>) {
        if ($lines =~ m/([^\s]+(([a-z0-9._%+-]+\@)|([a-zA-Z0-9]{2,15}(\.|\-|_)[a-zA-Z0-9]{2,15})))/i) {
        print DOC2 lc($1), "\n";
    }
}
close DOC2;
close DOC1;

它工作正常,但最近我意识到它只打印每行的第一个匹配。一旦找到匹配并打印出来,它就跳转到下一行而不进一步检查当前行。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您想要使用g修饰符(g表示全局,在匹配后保存您在字符串中的位置,并允许您查找多个匹配项),然后在{{中执行正则表达式1}}循环而不是while。试试这个:

if