Написал регулярку для такого условия: первая буква - заглавная русская, затем пробел, затем 6 цифр. Пример:
Г 666666
Регулярное выражение я записал следующим образом:
^[[А-Я]{1}[\\u0020]{1}[\\d]{6}]$
Требуется ли оптимизация данного регулярного выражения? И если да, то какая?
Выражение ^[[А-Я]{1}[\u0020]{1}[\d]{6}]$
находит только такую строку, которая состоит из одного символа (заглавной буквы, {
, пробела, цифры, }
), так как шаблон представляет собой неквантифицированный символьный класс со вложенными символьными классами (образуя так называемый "character class union", т.е. между этими символьными классами отношения типа ИЛИ), а квантификаторы тут распознаются как буквальные текст ([{6}]
найдет {
, 6
или }
).
Вам нужно использовать
^[А-Я] \d{6}$
См. демо
Если под "пробелом" понимается любой пробельный символ, замените пробел в выражении \s
и используйте флаг (?U)
(тогда найдутся все пробелы Юникода):
(?U)^[А-Я]\s\d{6}$
Подробности
^
- начало строки (в методе matches()
его можно опустить, так как совпадение должно совпадать со всей строкой) [А-Я]
- русская заглавная буква
- пробел (можете его записать как \u0020
, но это нужно только если вы планируете добавить в выражение комментарии с помощью флага Pattern.COMMENTS
, хотя и тогда можно написать \
, т.е. экранировать пробел)\d{6}
- 6 цифр (можно заменить на [0-9]{6}
)$
- конец строки.Java-код:
Boolean matched = s.matches("[А-Я] \\d{6}"); // Если в строке разрешается простой пробел
Boolean matched = s.matches("[А-Я]\\s\\d{6}"); // Если в строке разрешены любые пробельные символы
Квантификатор {1}
можно не писать, поскольку по умолчанию и так проверяется единственное совпадение.
Для пробельных символов существует подстановка \s
, которая работает независимо от параметров. При некоторых параметрах пробел в регулярном выражении используется для выделения разных частей и не принимает участие в проверке.
Результат: [A-Я]\s\d{6}
.
Символы ^
и $
нужно добавить, если вы хотите убедиться, что строка целиком совпадает с шаблоном.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос исключительно мучает меня 3 дня и только для профессионалов CSS этот вопрос очень важный для понимания как работает верстка так как...