Регулярное выражение для числовых (p, s) p = точность и s = масштаб - PullRequest
0 голосов
/ 11 февраля 2019

Хотите регулярное выражение для 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));
    }

Ожидаемый результат - это регулярное выражение, которое дастme true для любого значения числа, разделенного запятыми, в пределах "NUMERIC (" и ")"

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Используйте этот обычный опыт.

^NUMERIC\([0-9]+(,[0-9]\){1})

Я только что изменил ваш.

0 голосов
/ 11 февраля 2019

.matches() ожидает совпадения всей строки , и ваше регулярное выражение не содержит токена для закрывающей скобки.

Если всегда есть два значения p и s, вам следует использовать что-то вроде

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

См. Также Разница между match () и find () в Java Regex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...