Как сопоставить "любой символ" в регулярном выражении?

Следующее должно быть сопоставлено:

AAA123
ABCDEFGH123
XXXX123

Я могу сделать: ".*123"?

Ответ 1

Да, вы можете. Это должно работать.

  • .= any char
  • \.= фактический символ точки
  • .?= .{0,1}= сопоставить любой char ноль или один раз
  • .*= .{0,}= сопоставить любой char ноль или более раз
  • .+= .{1,}= сопоставить любой char один или несколько раз

Ответ 2

Да, это сработает, хотя обратите внимание, что . не будет соответствовать новым строкам, если вы не передадите флаг DOTALL при компиляции выражения:

Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();

Ответ 3

Используйте шаблон . для соответствия любому символу один раз, .*, чтобы соответствовать любому символу, ноль или более раз, .+, чтобы соответствовать любому символу один или несколько раз.

Ответ 4

Существует множество сложных инструментов для тестирования и разработки регулярных выражений, но если вам просто нужен простой тестовый жгут в Java, вот вам один из них:

    String[] tests = {
        "AAA123",
        "ABCDEFGH123",
        "XXXX123",
        "XYZ123ABC",
        "123123",
        "X123",
        "123",
    };
    for (String test : tests) {
        System.out.println(test + " " +test.matches(".+123"));
    }

Теперь вы можете легко добавить новые тестовые теги и попробовать новые шаблоны. Получайте удовольствие от изучения регулярного выражения.

См. также

Ответ 5

Нет, * будет соответствовать нулевым символам. Вы должны использовать +, который соответствует одному или нескольким.

Это выражение может работать лучше для вас: [A-Z]+123

Ответ 6

Попробуйте регулярное выражение. {3,}. Это будет соответствовать всем символам, ожидающим новую строку.

Ответ 7

Конкретное решение проблемы примера: -

Попробуйте [AZ] * 123 $ будет соответствовать 123, AAA123, ASDFRRF123. Если вам нужно хотя бы один символ до 123, используйте [AZ] +123 $.

Общее решение вопроса (Как сопоставить "любой символ" в регулярном выражении): -

  1. Если вы ищете что-либо, включая пробелы, вы можете попробовать [\ w |\W] {min_char_to_match,}.
  2. Если вы пытаетесь сопоставить что-либо, кроме пробелов, вы можете попробовать [\ S] {min_char_to_match,}.

Ответ 8

Наиболее распространенный способ кодирования этого кода - класс символов, члены которого образуют разделение множества возможных символов.

Обычно люди пишут это как [\s\S] (пробел или не пробел), хотя [\w\W], [\d\D] и т.д. Все будет работать.

Ответ 9

Тот, который помог мне, в случае, если вам интересно просто проверить любой персонаж

[^]+

Ответ 10

Я работаю над этим Не всегда точка означает любой символ. Исключение при однострочном режиме. \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");
    }'