1

私はPerlと正規表現の専門家ではありません。これが私の質問です。

指定された文字の右側にある文字列内のすべての単語を照合するための正規表現を記述し、Perlで各単語を個別に取得するにはどうすればよいですか?

不特定の数の単語を一致させて、最も重要なこととして一度に1つずつ取得する方法がわかりません。それが不可能な場合、これを行うためのPerlでの最善の策は何ですか?

EG:のようなCの割り当てがありb=var1+var2ます。抽出できるようにしたいのですがvar1var2存在する場合は。var1重要なのは、特定のandに一致させたくないのですが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 に答える