Java正则表达式新搜索以包括最后一个组

Java正则表达式新搜索以包括最后一个组,java,regex,Java,Regex,我想得到所有的子字符串(\d{2,3}),所以我使用 以我为例 strExample = " 123c12de34 "; 匹配检测到两个匹配:123和34。 是否有任何模式可用于检测3个匹配项:123、12和34?(?:^ |)(?交替使用正向查找,通过这样做,您将能够找到以行首或数字开头的数字: RegEx模式:/(?我在regexplanet上使用Java正则表达式测试页进行了尝试,我在regexplanet上使用Java正则表达式测试页进行了尝试,“123c12de34”第一次出现12次

我想得到所有的子字符串(
\d{2,3}
),所以我使用

以我为例

strExample = " 123c12de34 ";
匹配检测到两个匹配:123和34。
是否有任何模式可用于检测3个匹配项:123、12和34?

(?:^ |)(?交替使用正向查找,通过这样做,您将能够找到以行首或数字开头的数字:


RegEx模式:
/(?我在regexplanet上使用Java正则表达式测试页进行了尝试,我在regexplanet上使用Java正则表达式测试页进行了尝试,“123c12de34”第一次出现12次,而“123c12de34”第一次出现123次.I必须为子字符串中的每个匹配项循环?我想要的是找到原始字符串中的所有索引,其中开始和结束我的正则表达式(\d{2,3})。通常,我希望开始和结束的位置与正则表达式字符串匹配,正则表达式字符串可以具有可变长度的字符串。@MToma
匹配检测两个匹配:123和34。是否有模式检测三个匹配:123、12和34?
此正则表达式将查找所有的
3
匹配,与在J中使用之前仅匹配两个匹配的方式相同ava?@MToma:您可以在答案的更新中找到一个Java工作示例。谢谢。再问一个问题:我希望(\d{2,3})不是(\d+);我可以这样做吗?@MToma:当然,您只需要将表达式更改为:(?)?
strExample = " 123c12de34 ";
(?:^|(?<=\D))(\d{2,3})(?=\D|$)
public class StackOverflow32336833 {
    public static String text;
    public static String pattern;

    static {
        text = "123c12de34";
        pattern = "(?<=\\A|\\D)(\\d+)";
    }

    public static void printMatches(String text, String pattern) {
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);

        while (m.find()) {
            System.out.println(m.group());
        }
    }

    public static void main(String[] args) {
        printMatches(text, pattern);
    }   
}