1

我不是 Perl 和正则表达式的专家。所以这是我的问题。

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

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

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

谢谢您的帮助!

4

3 回答 3

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
于 2012-07-23T02:21:19.680 回答
1

也许以下内容对您有用:

use Modern::Perl;

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

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

输出:

var1
var2

希望这可以帮助!

于 2012-07-23T01:49:35.077 回答
0

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

=((?<Word>\w*)[^\w]*)*
于 2012-07-23T01:06:47.770 回答