首页 > 解决方案 > NUMERIC(p,s) p=precision 和 s=scale 的正则表达式

问题描述

想要 NUMERIC(p,s) 的正则表达式 NUMERIC 将始终存在,我只想检查括号内的值是否以逗号分隔。例如 NUMERIC(10,20) 所以我的正则表达式也将包含“NUMERIC(”和逗号检查数字和“)”

我已尝试进行逗号检查,但无法在我的正则表达式中获取带有“(”和“)”的 NUMERIC。

我试过“^NUMERIC\​​([0-9]+(,[0-9]+)*”

public static void main(String[] args) {
                String regex="^NUMERIC\\([0-9]+(,[0-9]+)*"
        String v="NUMERIC(1,2)";
        System.out.println(v.matches(regex));
    }

预期的结果是正则表达式,对于“NUMERIC(”和“)”中的任何逗号分隔的数值,它都将是正确的

标签: javaregex

解决方案


.matches()期望整个 字符串匹配,并且您的正则表达式不包含右括号的标记。

如果总是有两个值ps,你应该使用类似的东西

public static void main(String[] args) {
                String regex="NUMERIC\\([0-9]+,[0-9]+\\)"
        String v="NUMERIC(1,2)";
        System.out.println(v.matches(regex));
    }

如果第二个参数是可选的:

public static void main(String[] args) {
                String regex="NUMERIC\\([0-9]+(?:,[0-9]+)?\\)"
        String v="NUMERIC(1)";
        System.out.println(v.matches(regex));
    }

另请参阅Java Regex 中matches() 和find() 之间的区别


推荐阅读