获得该行的高端部分

时间:2013-06-20 04:27:16

标签: regex perl

有一个示例行:

'小时|日|年'

我需要获得一年的一部分,但我无法做出决定:

$string = 'Hour |Day |Year';
$string =~ s/^.*?|([^|]+)$/$1/;

4 个答案:

答案 0 :(得分:3)

将字符串拆分为元素:

my @elements = split( /\|/, $string );

然后获取最后一个元素:

print $elements[-1];

答案 1 :(得分:1)

你几乎得到它,你只需要“逃避”第一个|

$string = 'Hour |Day |Year';
$string =~ s/^.*?\|([^|]+)$/$1/;

因为它是一个特殊字符,在Perl正则表达式中表示or

答案 2 :(得分:0)

我认为你需要这个......

$string = 'Hour |Day |Year';
$string =~ s/^(?:.*?)\|([^|]+)$/$1/m;

答案 3 :(得分:0)

你也可以尝试这个:

([^|]+$)

它将从最后获取Year部分。无需匹配整个字符串。

Live Demo

您的代码应如下所示:

$string = 'Hour |Day |Year';
$string =~ s/([^|]+$)/$1/;