Sub*_*ash 6 regex perl version
这是我的测试用例。
在版本3.10.0.0之前可以使用的cmd_1在以后的版本中将不起作用。Cmd_2在3.10.1.0中引入,将是以后的有效替换。
我需要为上述情况添加一个条件。对于3.10.1.0之前的旧版本,必须执行cmd_1,而对于3.10.1.0及更高版本,则必须执行cmd_2。
我尝试如下:
if ( ( $version =~ /^3\.10\.[1-9]/ ) || ( $version =~ /^3\.[1-9][0-9]/ ) || ( $version =~ /^[4-9]/ ) {
# execute cmd_2;
}else{
# execute cmd_1;
}
Run Code Online (Sandbox Code Playgroud)
上述正则表达式在某些情况下会失败。例如,在version = 3.10.0.0的情况下,将执行cmd_2,这是无效的。
Cmd_2必须在以下版本中执行:
3.10.1.0,3.10.2.0,3.11.0.0,3.11.2.0,3.20.0.0,4.0.0.0,5.0.0.0,10.0.0.0
Cmd_1必须在以下版本中执行:
3.10.0.0,3.9.0.0,3.1.0.0,3.0.0.0,2.0.0.0,1.0.0.0
我尝试了一些正则表达式,但找不到理想的正则表达式。请帮我解决一下这个。
提前致谢。
ike*_*ami 11
不要为此使用正则表达式模式。
use version qw( );
if ($version >= version->declare("3.10.1.0")) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
这个正则表达式应该做你想要的。
^(?:[4-9]|[1-9]\d+)(?:\.\d+){3}|3\.[2-9]\d(?:\.\d+){2}|3\.1[1-9](?:\.\d+){2}|3\.10\.[1-9]\d?\.\d+$
Run Code Online (Sandbox Code Playgroud)
它寻找所有cmd_2应该运行的情况,即
[1-9]x.x.x.x
[4-9].x.x.x
3.[2-9]x.x.x
3.1[1-9].x.x
3.10.[1-9]x.x
3.10.[1-9].x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |