Следующее должно быть сопоставлено:
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");
}'