Следующее должно быть сопоставлено:
AAA123
ABCDEFGH123
XXXX123
Я могу сделать: ".*123"?
Следующее должно быть сопоставлено:
AAA123
ABCDEFGH123
XXXX123
Я могу сделать: ".*123"?
Да, вы можете. Это должно работать.
.= any char\.= фактический символ точки.?= .{0,1}= сопоставить любой char ноль или один раз.*= .{0,}= сопоставить любой char ноль или более раз.+= .{1,}= сопоставить любой char один или несколько разДа, это сработает, хотя обратите внимание, что . не будет соответствовать новым строкам, если вы не передадите флаг DOTALL при компиляции выражения:
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
Используйте шаблон . для соответствия любому символу один раз, .*, чтобы соответствовать любому символу, ноль или более раз, .+, чтобы соответствовать любому символу один или несколько раз.
Существует множество сложных инструментов для тестирования и разработки регулярных выражений, но если вам просто нужен простой тестовый жгут в Java, вот вам один из них:
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
Теперь вы можете легко добавить новые тестовые теги и попробовать новые шаблоны. Получайте удовольствие от изучения регулярного выражения.
Нет, * будет соответствовать нулевым символам. Вы должны использовать +, который соответствует одному или нескольким.
Это выражение может работать лучше для вас: [A-Z]+123
Попробуйте регулярное выражение. {3,}. Это будет соответствовать всем символам, ожидающим новую строку.
Конкретное решение проблемы примера: -
Попробуйте [AZ] * 123 $ будет соответствовать 123, AAA123, ASDFRRF123. Если вам нужно хотя бы один символ до 123, используйте [AZ] +123 $.
Общее решение вопроса (Как сопоставить "любой символ" в регулярном выражении): -
Наиболее распространенный способ кодирования этого кода - класс символов, члены которого образуют разделение множества возможных символов.
Обычно люди пишут это как [\s\S] (пробел или не пробел), хотя [\w\W], [\d\D] и т.д. Все будет работать.
Тот, который помог мне, в случае, если вам интересно просто проверить любой персонаж
[^]+
Я работаю над этим Не всегда точка означает любой символ. Исключение при однострочном режиме. \p {все} должно быть
'String value="|°¬<>!\"#$%&/()=?'\\¡¿/*[email protected][]^^{}";
String expression="[a-zA-Z0-9\\p{all}]{0,50}";
if(value.matches(expression)){
System.out.println("true");
}else{
System.out.println("False");
}'