perl正则表达式匹配字符后的所有单词

时间:2012-07-23 00:54:18

标签: regex perl

我不是Perl和regex的专家。所以这是我的问题。

如何编写正则表达式,将字符串中的所有单词匹配到指定字符的右侧,并在Perl中单独检索每个单词?

我不明白我如何匹配未指定数量的单词,然后最重要的是一次检索一个单词?如果这不可能,那么在Perl中我最好的选择是完成这项工作吗?

E.G。:我有一个像b=var1+var2这样的C作业。我希望能够提取var1var2(如果存在)。重要的是我不想匹配特定的var1var2,而是匹配赋值运算符之后的任何变量。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

\G / pos可能有用。

$_ = 'b=var1+var2';
# force further /g matches to start after the first '='
/=/g;

while (/(\w+)/g) {
    print "$1\n";
}

# prints
# var1
# var2

答案 1 :(得分:1)

也许以下内容适合您:

use Modern::Perl;

my $string = 'b=var1+var2';
my $after  = '=';

say for ( $string =~ /$after(.*)/ )[0] =~ /(\w+)/g;

输出:

var1
var2

希望这有帮助!

答案 2 :(得分:0)

您可以在正则表达式中使用嵌套组。因此,例如,以下正则表达式应匹配所有单词(定义为\ w,但你可以调整它)在等式字符之后的等式(由非\ w分隔,但你也可以调整它):

=((?<Word>\w*)[^\w]*)*