Что такое регулярное выражение для чисел (p, s) в Java - PullRequest
0 голосов
/ 07 февраля 2019

Требуется регулярное выражение для NUMERIC (p, s). NUMERIC всегда будет там, и я просто хочу проверить, находятся ли в скобках мои значения в десятичном виде или нет.Например, NUMERIC (10.20), поэтому мое регулярное выражение также содержит «NUMERIC (» и десятичную проверку и «)»

Я пытался выполнить десятичную проверку, но не смог получить NUMERIC с помощью «(» и «)"в моем регулярном выражении" ^ \ d * \. \ d + | \ d + \. \ d * $ "

      private boolean getRegex() {
            String valueType="NUMERIC(10.78)";
    String regex = "^NUMERIC(\\d*\\.\\d+|\\d+\\.\\d*$)";
    return valueType.matches(regex);
}

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

1 Ответ

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

У вашего регулярного выражения ^NUMERIC(\\d*\\.\\d+|\\d+\\.\\d*$) есть небольшие проблемы.Вам нужно экранировать ( и записать их как \( аналогично ) как \).Далее, я не думаю, что вам нужно чередование, так как вы хотите сопоставлять только десятичные значения, следовательно, для этого вы можете написать это так: \d*\.\d+, так как это будет соответствовать необязательным цифрам перед десятичной дробью, и так как значение должно быть десятичным, необходимобыть как минимум одной цифрой после ., следовательно, потребуется \d+.Вы можете использовать это регулярное выражение,

^NUMERIC\(\d+\.\d+\)$

Демо

Java-коды,

List<String> list = Arrays.asList("NUMERIC(10.78)","NUMERIC(.78)","NUMERIC(1078)");
list.forEach(x -> System.out.println(x + " --> "+x.matches("^NUMERIC\\(\\d+\\.\\d+\\)$")));

Отпечатки,

NUMERIC(10.78) --> true
NUMERIC(.78) --> false
NUMERIC(1078) --> false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...