Как мы уже знаем из предыдущего урока, метасимволы * и + используются для указания произвольного количества повторяющихся символов в строке.
Еще одним метасимволом, который часто встречается при сопоставлении и извлечении текста, является ?
(знак вопроса), который обозначает необязательность. Этот метасимвол позволяет указать на необязательный символ в выражении, например, шаблон ab?c
будет соответствовать либо строке abc
, либо строке ac
, поскольку символ b
считается необязательным.
Подобно метасимволу точки, знак вопроса также является специальным символом, и для его экранирования нужно использовать \
, чтобы соответствовать простому знаку вопроса в строке.
В следующем упражнении, обратите внимание на то, как изменяется слово file
в зависимости от количества найденных файлов. Попробуйте написать шаблон, который использует метасимвол необязательности для соответствия только тем строкам, в которых был найден один или несколько файлов.
Задание | Текст | |
Соответствовать | 1 file found? | ![]() |
Соответствовать | 2 files found? | ![]() |
Соответствовать | 24 files found? | ![]() |
Пропустить | No files found. | ![]() |
Решение | Мы можем использовать метасимвол \d для соответствия количеству файлов и выражение \d+ files? found\? — для соответствия строкам, где были найдены файлы.
Обратите внимание, первый знак вопроса применяется к символу |