Как использовать регулярное выражение для сопоставления выражений, таких как b1, b2, ... через b15, но не дальше? - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Java, Eclipse на Mac под управлением MacOs Mojave.Кажется, это будет легко, но я потратил на это 4-5 часов.Необходимо распознать следующие строки: b1, b2, b3, ... b14, b15.
Пробовал "^b1[012345]{1}$ | ^b[1-9]?$ и другие: (^b1[012345]{1}$) | (^b[1-9]{1}$)

^b(1 | 2| 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | | 13 | 14 | 15){1}$ и даже ^b( '1' | '2' | '3' | '4' | '5' | '6' | '7'... | '15'){1}$

Большое спасибо заранее.

Ответы [ 2 ]

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

Спасибо.Но это не сработало;Я возился с этим и не мог приступить к работе.Следующее является многословным, но это работает:

String first = pageText.substring(0, 1);
String rest = pageText.substring(1, pageText.length());
String pattern = "[^0-9]";
Matcher matcher = Pattern.compile(pattern).matcher(rest);
    while (matcher.find()) {
        JOptionPane.showMessageDialog(null,
            "<html>Only b followed by a number between 1 and “
            + “15 in the page number field",
            "Page Number Is Not Recognizable",
            JOptionPane.ERROR_MESSAGE);
        return;
}
int intRest = Integer.parseInt(rest); // string to integer
 if ((intRest > 0 && intRest < 16) && (first.equals("b"))) {
      // valid
0 голосов
/ 01 февраля 2019

Попробуйте это регулярное выражение:

\bb(?:1[0-5]|[1-9])\b

Нажмите для демонстрации

В JAVA вам нужно бежать \ с другим \

Объяснение:

  • \b - соответствует границе слова
  • b - соответствует букве b
  • (?:1[0-5]|\d) - соответствует 1, за которым следует число в диапазоне 0-5 ИЛИ соответствует однозначное число из 1-9
  • \b - соответствует границе слова
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...