java - 如何在java中使用正则表达式分割一个大数?

标签 java regex

这是我的号码“1508261”。 最后我想要一个列表(“15”,“08”,“261”)。 这意味着,该模式应始终创建两个新数字,每个数字各有两位数字,其余数字应全部包含在最后一个(第三个)数字中。

我尝试使用这种方法,但它返回(“1508261”):

Pattern pattern = Pattern.compile("([0-9]{2})([0-9]{2})([0-9]{1,})");    
Matcher matcher = pattern.matcher("1508261");
    ArrayList<String> list = new ArrayList<String>();
    while (matcher.find()) {
       list.add(matcher.group());
    }

最佳答案

您的代码片段针对输入字符串测试整个模式,而不是单独测试每个组。您可能想使用 Matcher.matches()Matcher.group(int) 而不是 Matcher.find():

    Pattern pattern = Pattern.compile("([0-9]{2})([0-9]{2})([0-9]{1,})");    
    Matcher matcher = pattern.matcher("1508261");
    ArrayList<String> list = new ArrayList<String>();
    if(matcher.matches()) {
        for(int i = 1;i <= matcher.groupCount();i++)
            list.add(matcher.group(i));
    }

    System.out.println(list);

Ideone 中的实例 here .

另请注意,Matcher.group()Matcher.group(0) 执行相同的工作。更多信息可以在Oracle Java Regex Tutorial中找到.

关于java - 如何在java中使用正则表达式分割一个大数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235298/

相关文章:

java - 何时调用 View.onMeasure()?

java - 在 Hibernate 中使用 Transient 属性

java - 如何使用 selenium xpath 等待页面中的两个元素之一

java - JDI 为多个类应用类过滤器

PostgreSQL 查询中字符串最后 n 个字符的正则表达式

java - 在Java中测试不同的文件读取方法

java - 如何从 Optional 的 ifPresent 中选取值

python - 正则表达式查找字符串中的最后一个单词(Python)

regex - Powershell根据长度替换行上的文本

c# - RegEx.Replace 但排除 html 标签内的匹配项?