在perl中使用substr来获取字符串的一部分

时间:2014-01-13 12:26:56

标签: regex perl

我在不同的服务器上运行脚本,并希望从对象名称中获取env。但是对象名称可能因服务器而异。 不同服务器中的对象名称:

QDEV1,QDEV2,QQA1,QQA2,QCERT1,QCERT2,QPROD1,QPROD2.

不,我正在尝试使用substr将env作为DEV,QA,CERT,PROD。我将对象名称作为脚本的一个条目。

$env = substr($objectname, -4,[3-4]);
print $env;

在开发环境中运行时返回DEV1 / DEV2,在QA中运行QQA1 / QQA2。我只需要$ env

output(any one of these): DEV or QA or CERT or PROD

1 个答案:

答案 0 :(得分:4)

您可能只想使用简单匹配。例如:

$objectname =~ /(DEV|QA|CERT|PROD)/;
print $1;

如果您只想获取不带前导Q的名称和可以使用的尾随数字:

$objectname = "QFOO2";
$objectname =~ /^Q([^\W\d]+)\d+$/;
print $1; # prints "FOO"

如果你不想要其余的话,你可以直接替换变量:

$objectname = "QFOO43";
$objectname =~ s/^Q([^\W\d]+)\d+$/$1/;
print $objectname; # prints "FOO"