1

私はこれらの文字列を持っています:

int name
const int level
const char          *  const                    format
(float) int promenna
(char *) int jina

perl で変数の名前 (名前、レベル、形式など) を残りから分離するにはどうすればよいですか? 私はいくつかの正規表現を試しまし/((\.*\s*\w+)+)(\s+)(\w+)$/たが、私はそれがあまり得意ではなく、問題があります。誰でも簡単に解決できますか?3 番目の例では、多くのスペースがあり、それを数えなければなりません。\s* が存在する可能性があります。ありがとうございました

編集:私が欲しいものを説明するのは悪いです。別の名前が必要だと言いました。つまり、文字列から最後の単語 (変数名) を削除する必要があるということです。誤解を招いて申し訳ありません。

4

1 に答える 1

4

最後の「単語」を何も使わずに置き換えるだけです。

s/\w+$//

例えば:

#!perl

my @strings = (
    'int name',
    'const int level',
    'const char          *  const                    format',
    '(float) int promenna',
    '(char *) int jina',
    'char *a'
);

for my $string (@strings) {
    $string =~ s/\w+$//;
    $string =~ s/\s*$//;
    $string =~ s/\s+/ /g;
    print "$string\n";
}

結果は

int
const int
const char * const
(float) int
(char *) int
char *
于 2012-04-04T12:37:23.430 に答える