Как найти только точные совпадения с образцом в Java? - PullRequest
1 голос
/ 24 мая 2019

Строка «description» содержит 5-значные и 7-значные подстроки. Я хотел бы соответствовать 5 цифр, 7 цифр с 5 цифрами, 7 цифр соответственно только. Но подстрока из 5 цифр извлекает всю строку из 5 цифр и первые 5 цифр из 7 цифр.

Pattern 5digitPattern = Pattern.compile("([0-9]{5})");
Pattern 7digitPattern = Pattern.compile("([0-9]{7})");

Matcher 5digitMatcher = 5digitPattern.matcher(description);
Matcher 7digitMatcher = 7digitPattern.matcher(description);

            if (5digitMatcher.find()) {
                for (int i = 0; i < 5digitMatcher.groupCount(); i++) {
                    System.out.print("\t" + 5digitMatcher.group(i));
                }
            }

            if (7digitMatcher.find()) {
                for (int i = 0; i < 7digitMatcher.groupCount(); i++) {
                    System.out.print("\t" + 7digitMatcher.group(i));
                }
            }

Пожалуйста, помогите мне в сопоставлении 5 цифр, 7 цифр с 5 цифрами, 7 цифр соответственно.

1 Ответ

2 голосов
/ 24 мая 2019

Использовать границу слова:

Pattern 5digitPattern = Pattern.compile("\\b([0-9]{5})\\b");
Pattern 7digitPattern = Pattern.compile("\\b([0-9]{7})\\b");

Согласно комментарию, если вы хотите сопоставить цифры в abc12345def, используйте отрицательный ответ:

Pattern 5digitPattern = Pattern.compile("(?<![0-9])([0-9]{5})(?![0-9])");
Pattern 7digitPattern = Pattern.compile("(?<![0-9])([0-9]{7})(?![0-9])");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...