lzlishl
lzlishl
采纳率100%
2018-10-26 07:16 阅读 18.6k

如何使用正则表达式提取特定字符串后面的数字

5

例如,在下面的字符串中“var jsTimeSharingData={pages:13,data:[”,将pages:后面的13提取出来,正则表达式如何写。我是这么写的"'pages:(\d+)'",结果得到pages:13,而不是13。如何写才能只取得数字?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

9条回答 默认 最新

  • 已采纳
    xingjianfengaa xingjianfengaa 2018-10-26 07:40

    你用的什么语言,比如java 你的代码 匹配之后 ,group(0)是 pages:13 group(1)是13

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-10-26 07:18

    零宽断言了解一下:
    https://www.cnblogs.com/macq/p/6597366.html

    你的问题的解答:

     (?<=pages\:)\d+
    
    点赞 6 评论 复制链接分享
  • hometing218 hometing218 2018-10-26 07:24
        String phoneString = "哈哈,13888889999";
        // 提取数字
        // 1
        Pattern pattern = Pattern.compile("[^0-9]");
        Matcher matcher = pattern.matcher(phoneString);
        String all = matcher.replaceAll("");
        System.out.println("phone:" + all);
        // 2
        System.out.println( Pattern.compile("[^0-9]").matcher(phoneString).replaceAll(""));;
    
    点赞 评论 复制链接分享
  • qq_39196400 K beasts 2018-10-26 07:35

    (?!pages:)\d+

    点赞 评论 复制链接分享
  • weixin_41312918 weixin_41312918 2018-10-26 08:15

    (\d+)
    你可以去这个网站测试一下你的正则,我感觉蛮好用 http://tool.oschina.net/regex/# 正则测试工具,不知道你用的什么语言,python可以

    点赞 评论 复制链接分享
  • jslang 天际的海浪 2018-10-26 09:33

    如果你的值直接是对象,可以用 对象.属性 的方式获取。不需要也不能用正则表达式

    var jsTimeSharingData={pages:13,data:[]}
    alert(jsTimeSharingData.pages);
    

    如果你的值是标准的json格式字符串,可以先解析为对象,也不需要用正则表达式。

    var jsTimeSharingData='{"pages":13,"data":[]}'
    alert(JSON.parse(jsTimeSharingData).pages);
    

    如果一定要用正则表达式。js中可以用下面方法。

    var jsTimeSharingData='{pages:13,data:[]}'
    alert(jsTimeSharingData.match(/pages:(\d+)/)[1]);
    

    如果要只取得数字。只有用后向断言,但是js中不支持,其它语言可以用:

    (?<=pages\:)\d+
    
    点赞 评论 复制链接分享
  • lzlishl lzlishl 2018-10-27 03:23

    我是在delphi中使用RegExpr。xingjianfengaa的答案正解,解决了我的问题,但不知道为何不可在第一组得到。谢谢caozhy、qq_39196400 、jslang,使用(?<=pages:)\d+或 (?!pages:)\d+,会出现exception错误,可能是使用的解释器不同。 同样感谢weixin_41312918、zhuzuyumao,但实例字符串中后面的数字还有很多,单用d+不行(误导你们了)。

    点赞 评论 复制链接分享
  • qq_17445635 qq_17445635 2018-10-26 07:26

    var str = 'haj123sdk54hask33dkhalsd879';

    function findNum(str){
    return str.match(/\d+/g);
    }

    alert( findNum(str) ); //[123,54,33,879]

    望采纳。

    点赞 评论 复制链接分享
  • zhuzuyumao 么什 2018-10-26 07:30

    使用\d+

    var jsTimeSharingData="{pages:13,data:[";

    function getNumber(str){
    return str.match(/\d+/g);
    }

    console.log(getNumber(jsTimeSharingData));

    
    
    点赞 评论 复制链接分享

相关推荐