我不是Perl和regex的专家。所以这是我的问题。
如何编写正则表达式,将字符串中的所有单词匹配到指定字符的右侧,并在Perl中单独检索每个单词?
我不明白我如何匹配未指定数量的单词,然后最重要的是一次检索一个单词?如果这不可能,那么在Perl中我最好的选择是完成这项工作吗?
E.G。:我有一个像b=var1+var2
这样的C作业。我希望能够提取var1
和var2
(如果存在)。重要的是我不想匹配特定的var1
和var2
,而是匹配赋值运算符之后的任何变量。
感谢您的帮助!
答案 0 :(得分:3)
$_ = '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]*)*