V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjuster
V2EX  ›  正则表达式

正则求助:选中末尾倒数第一组数字

  •  
  •   zjuster · 2015-06-02 20:21:51 +08:00 · 1967 次点击
    这是一个创建于 3460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如“更新至44集 | 共48集” or “全48集”,要选择48。

    具体的需求是将48选中,其余内容删掉。删内容这个已经有现成的工具和函数,现在苦恼于如何只选中48。(如果是共123集,要选择123)。

    replace([^\d],) 直接删除非数字之后的结果是“4448”,考虑在处理掉44,但是似乎无法处理123的例子

    replace(.*\s[^\d],) 在第一个pattern里可以选中“48集”,这个集又去不掉了,“全48集”的全也去不掉

    苦恼...
    8 条回复    2015-06-02 22:29:35 +08:00
    zjuster
        1
    zjuster  
    OP
       2015-06-02 20:24:31 +08:00
    replace (.*[^\d]([0-9]+)[^\d],\1)

    居然用这个成功选择并替换出了这个数字。但是我也不知道为什么。

    有人能帮我解释下吗。
    Septembers
        2
    Septembers  
       2015-06-02 20:36:05 +08:00   ❤️ 1
    see https://www.debuggex.com/r/37PdOIb3p445uFvA



    > /共(\d+)集/.exec('更新至44集 | 共48集')
    < ["共48集", "48"]
    > /(\d+)集$/.exec('更新至44集 | 共48集')
    < ["共48集", "48"]
    see http://deerchao.net/tutorials/regex/regex.htm
    tcsky
        3
    tcsky  
       2015-06-02 20:46:43 +08:00   ❤️ 1
    (\d+)\D+(\d+)
    zjuster
        4
    zjuster  
    OP
       2015-06-02 21:04:14 +08:00
    @Septembers 谢谢。这个帖子正是我入门的学习贴。还是有很长的路要走。
    rrkelee
        5
    rrkelee  
       2015-06-02 21:29:04 +08:00   ❤️ 1
    ```
    function get_last_num($str){

    preg_match_all('/\d+/', $str, $matches);

    return end( $matches[0] );

    }
    ```

    PHP 大法好。
    omph
        6
    omph  
       2015-06-02 22:25:03 +08:00   ❤️ 1
    Honwhy
        7
    Honwhy  
       2015-06-02 22:26:04 +08:00   ❤️ 1
    第一个笨办法:

    [code]
    var str = "更新至44集 | 共48集";
    var arr = [];
    str.split(/[^\d]+/g).forEach(function(value){
    if(!!value) {
    arr[arr.length] = value;
    }
    });

    console.log(arr[arr.length-1]);
    [/code]
    Honwhy
        8
    Honwhy  
       2015-06-02 22:29:35 +08:00   ❤️ 1
    @Honwhy
    第二种办法:
    var m = /\D*(\d+)\D*$/.exec(str);
    if(m != null) {
    console.log(m[1]);
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 06:55 · PVG 14:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.