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



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

Pattern pattern = Pattern.compile("(?m)(\D)(\d{2,3})(\D)");

对于我的例子

strExample = " 123c12de34 ";

匹配检测2个匹配:12334。是否有任何模式来检测3个匹配:1231234?

(?:^|(?<=D))(d{2,3})(?=D|$)

0 width assertionslookarounds代替match,这将启用所有3,因为现在没有任何overlap

使用交替使用,通过这样做,您将能够找到以行开头或数字开头的数字:

RegEx Pattern: /(?<=A|D)(d+)/g

工作演示@ regex101

<标题> Update # 1

Java工作示例

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);
    }   
}

最新更新