Подстановочный знак, ноль или более повторений и необязательный символ

Вступление

Это последняя часть моей публикации о специальных персонажах в моей серии регулярных выражений. В этой публикации я упомяну подстановочный знак, необязательный символ и символ с нулевым или большим числом повторений.

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

Необязательный символ

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

В необязательном символе интересно то, что он обращает внимание на предыдущий символ.

Например, я создам две тестовые строки, чтобы мы могли видеть, что происходит. Это будут «Тест» и «Тестировщик».

Поскольку «r» предшествует нашему необязательному символу, наше регулярное выражение ищет соответствие шаблону, который как минимум содержит строку «Teste». Это означает, что буква «r» необязательна, и потому она соответствует «Teste». Поскольку «r» присутствует в «Tester», он также соответствует строке «Tester». В этом примере "r" может встречаться ноль или более раз.

Подстановочный знак

Подстановочный знак - еще один интересный специальный символ, потому что он, по сути, сообщает вашему шаблону, что он соответствует любому символу, если это не символ новой строки.

Подстановочный знак использует . в регулярном выражении. Если вы хотите сопоставить чистую точку для целей пунктуации, вам придется избегать ее, как при использовании обратной косой черты перед точкой: \..

Подстановочный знак, как я уже сказал, будет соответствовать любому одиночному символу. Поэтому я введу строку «кошка» для нашей тестовой строки.

Если я использую подстановочный знак (в этом случае я буду использовать глобальный флаг), он будет соответствовать каждому отдельному символу. Он соответствует «c», он соответствует «a» и соответствует «t». Несмотря на то, что моя тестовая строка является алфавитной, подстановочный знак все равно может соответствовать ей.

Если вы хотите сопоставить весь экземпляр строки 'cat', вы можете добавить +, (, иначе известный как один или несколько повторений, я упоминал об этом в своем сообщении о квантификаторы .). Он сообщит, что ваш подстановочный знак соответствует любому символу (за исключением новой строки), и что он должен встречаться ОДИН или несколько раз.

Как видите, теперь мы соответствуем всей строке «cat».

Ноль или более повторений символа

Символ повторения, равный нулю или более, также является другим полезным специальным символом, который обозначается символом *. Этот символ будет следовать за набором символов или группой и будет проверять символы, которые ему предшествуют. Это делает символ, который появляется перед ним, необязательным, но он также может появляться неограниченное количество раз.

Я решил сделать так, чтобы наша тестовая строка содержала обязательную буквальную строку «cat», но ей мог бы предшествовать символ, который встречается ноль или более раз. В данном случае я выбрал букву «b».

За буквой «b» следует *, поэтому она может встречаться ноль или более раз.

Хотя мое регулярное выражение будет соответствовать только строке, в которой есть слово «кот», оно также будет включать совпадения, в которых есть буква «b».

  1. В первой строке у меня есть шесть букв перед строкой «кошка», и она совпадает.

2. Во второй строке есть одна буква «b», которая предшествует этой строке «cat», и она также соответствует.

3. Однако в последней строке соответствует только «кошка», поскольку предыдущий символ - «а», а не «b». ВСЕ НЕ ПРОТЕРЯЕТСЯ! Самое замечательное в этом то, что мы по-прежнему будем соответствовать нашей требуемой строке, а не вообще ничего не совпадать.

Это здорово, потому что оно будет соответствовать вашей требуемой строке (cat) или будет соответствовать требуемой строке плюс ваши необязательные символы (bcat или bbbbbbcat) или и то, и другое. Это позволяет мне узнать, что я потенциально могу сопоставить «кошка» и, кроме того, любой другой случай, когда ему может предшествовать «b», например «bcat» и «bbbbbbcat».

Заключение

Это конец моего раздела специальных символов, и в следующем посте я перейду к совпадающим символам в разных частях строки, например, в конце или в начале строки. Увидимся в следующий раз!