1

我有这些字符串:

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

如何在 perl 中将变量的名称(名称、级别、格式……)与 rest 分开?我尝试了一些常规的表达方式,/((\.*\s*\w+)+)(\s+)(\w+)$/但我不是很擅长,我的有问题。那么有人有简单的解决方案吗?在第三个例子中,有很多空格,你必须计算在内,可能有 \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 回答