【问题标题】:How can I extract a major and minor version number from the end of a string?如何从字符串末尾提取主要和次要版本号?
【发布时间】:2022-01-21 17:03:30
【问题描述】:

我正在尝试提取 CMS Tikiwiki 版本,但在提取版本时遇到问题。 我只能提取数字的第一部分,例如:

15.0版本,我只能提取15,但我想提取15.0。

if ($res=~ m/as of version (.+?)\./) {

  $version = $1;

 }

提取版本的句子

以下列表试图收集 Tiki 15.0 版的版权所有者。

【问题讨论】:

    标签: regex perl extract


    【解决方案1】:

    试试这个,

    if ($res =~ m/as of version (\d+(?:\.\d+))\./) {
    

    如果这是你想要的字符串的结尾,

    if ($res =~ m/as of version (\d+(?:\.\d+))\.$/) {
    

    模式(\d+(?:\.\d+)) 捕获任意数字,后跟可选的. 分组和一个或多个数字。

    【讨论】:

    • 我会用[\d.]*代替(?:\.\d+)
    • @TLP 匹配 as of version 5......
    • 正则表达式的严格性与给定的字符串匹配。如果字符串应该改变,正则表达式也必须改变。这足够松散,可以将任何给定的字符串与给定的格式匹配。
    • 问题是将它与给定的字符串匹配,它甚至在 if 语句中,所以它只在它提供 OP 正在寻找的输出时匹配。他正在设置一个名为 $version 的变量
    【解决方案2】:

    你可以使用

    /as of version (.+)\./
    

    但我很想使用

    /as of version (\S+)\./
    

    \S 匹配非空格字符。


    顺便说一句,

    my $version
    if ( $res =~ /.../ ) {
       $version = $1;
    }
    

    可以写成

    my ( $version ) = $res =~ /.../;
    

    【讨论】:

    • 与 Evan Carroll 的解决方案不同,如果他们开始使用 15.0.1,此版本不会失败。它也更简单。
    • ... 或添加其他内容,例如 15.0-TRIAL :)
    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多