0

有一个示例行:

'时|日|年'

我需要一年的一部分,但我不能例如做出决定:

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

4 回答 4

3

将字符串拆分为元素:

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

然后得到最后一个元素:

print $elements[-1];
于 2013-06-20T04:32:33.063 回答
1

你几乎明白了,你只需要“逃脱”第一个|

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

因为它是orPerl 正则表达式中的特殊字符。

于 2013-06-20T04:31:01.013 回答
0

我觉得你需要这个......

$string = 'Hour |Day |Year';
$string =~ s/^(?:.*?)\|([^|]+)$/$1/m;
于 2013-06-20T04:32:38.483 回答
0

你也可以试试这个:

([^|]+$)

它只会从最后拿起Year部分。无需匹配整个字符串。

现场演示

您的代码应如下所示:

$string = 'Hour |Day |Year';
$string =~ s/([^|]+$)/$1/;
于 2013-06-20T04:59:27.053 回答