Написал регулярку для такого условия: первая буква - заглавная русская, затем пробел, затем 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}.
Символы ^ и $ нужно добавить, если вы хотите убедиться, что строка целиком совпадает с шаблоном.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей