我有一个查询。如果条件允许,我必须匹配2个字符串:
$ release = 5.x(此处x应大于或等于3) $ version = Rx(如果$ release为5.3,则此x应大于或等于5,否则任何内容均可接受)
e.g。 5.1R11是不可接受的,5.3R4不可接受,5.3R5是可接受的,5.4 R1是可接受的。
我写了这样的代码:
$release = "5.2";
$version = "R4";
if ( $release =~ /5.(?>=3)(\d)/ && $version =~ m/R(?>=5)(\d)/ )
{
print "OK";
}
我怎么写这个?
答案 0 :(得分:3)
这实际上是一个三级版本字符串,我建议您使用Perl的version
工具
use strict;
use warnings 'all';
use feature 'say';
use version;
my $release = '5.2';
my $version = 'R4';
if ( $version =~ /R(\d+)/ && version->parse("$release.$1") ge v5.3.5 ) {
say 'OK';
}
答案 1 :(得分:0)
答案 2 :(得分:-1)
在修改了mkhun的解决方案后,我得到了正确的解决方案:
if ((($release =~ /5.3/)) && (($version =~ m/R(\d+)(.\d+)?/) && ($1 >= 5))
|| ((($release =~ /5.(\d)/) && ($1 > 3)) && ($version =~ m/R(\d+)(.\d+)?/)) )
{
print "OK\n";
}