代码之家  ›  专栏  ›  技术社区  ›  Gordian Yuan

如何获取文本编号?

  •  0
  • Gordian Yuan  · 技术社区  · 15 年前

    我有这样的文字:“这是13221件物品中的145件”。我需要一次获取所有文本的编号(“145和13221”)。我想用regex来做这个。雷杰克斯是什么样子的?”\“D+”不好用。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jon    15 年前

    你需要使用像 ^[^\d]*(\d+)[^\d]*(\d+)[^\d]*$ . 取决于你用的是什么口味的regex。

    此regex匹配:

    1. 开始时零个或多个非数字字符(“它是”)。
    2. 捕获组1(“145”)中的一个或多个数字字符
    3. 零个或多个非数字字符(“of”)。
    4. 捕获组2(“13221”)中的一个或多个数字字符
    5. 结尾处零个或多个非数字字符(“项目”)。
        2
  •  3
  •   polygenelubricants    15 年前

    \d+ 工作良好。根据语言的不同,您可能需要将斜线转义为 "\\d+" ,例如在Java中。

        String text = "It's the 145 of 13221 items";
        Matcher m = Pattern.compile("\\d+").matcher(text);
        while (m.find()) {
            System.out.println(m.group());
        }
        // prints "145", "13221"
    

    您需要了解如何在您的语言中找到字符串中的regex匹配项,但是模式 d+ 将匹配连续数字的非零序列。


    在javascript中,您可以这样做:

    function findDigitSequences(s) {
        var re = new RegExp("\\d+", "g");
        return s.match(re);
    }
    
        3
  •  0
  •   Aren    15 年前
    ^[\D\w]+([\d]+)[\D\w]+([\d]+).+$
    

    捕获组:

    1. 一百四十五
    2. 一万三千二百二十一

    抱歉,我写那封信的时候脑子里没了。