Экранирование символов, волшебная точка и поиск всего чего угодно. Продолжение серии уроков по регулярным выражениям
© unsplash.com
Не помните, что такое регулярное выражение и как выделить все числа в тексте «33 богатыря, 1001 ночь»? Повторите
Часть 1. Что такое регулярные выражения? Классы символов.
Не помните, как найти все заглавные буквы в слове ПрИвЕтиКи? Повторите
Часть 2. Наборы и диапазоны. Отрицания
Классы символов мы задавали следующим образом:
\d — 1 р.
\D — 1 р.
Наборы и диапазоны — так:
[123] — 40 мертвецов и 1 бутылка рома
[А-Я] — ПрИвЕтиКи
Наборы символов, как и классы, можно отрицать. Для этого сразу после первой квадратной скобки нужно поставить знак карет ^:
[^А-Я] — найдёт всё, кроме заглавных букв кириллицы: «кАПС»
[^ауоыиэяюёе] — найдёт всё, кроме строчных гласных: «велосипедист»
Как быть, если мы хотим найти вообще любой символ? В регулярных выражениях для этого есть особый знак — точка. Точка находит любой символ за исключением переноса строки. Например:
.+ найдёт «▥Flบffy$heeⓟⁿ»
Такие символы, которые обозначают не себя, а что-то другое, называются метасимволами.
Хорошо, а как найти саму точку, если нужна только она? Для этого перед точкой нужно поставить \.
\. будет соответствовать именно точка.
\. Найдет 3.14
Такой прием называется экранированием. Экранировать можно любой метасимвол. Например, + — как вы помните, это тоже особый символ (он обозначает, что предыдущий символ повторяется от 1 до бесконечности раз).
1+ найдет 1111111
1\+ найдет 1+
Сам \ тоже можно экранировать — ведь это тоже метасимвол.
\\ найдет \
Таблица символов — здесь можно посмотреть все метасимволы
Как найти предложение, в начало которого затесался странный символ?
Личный попугай капитана Флинта изучил 1561 ругательств на разных языках. 271 ругательство на английском, 352 на французском и 127 на испанском. &остальные попугай почерпнул из могучего русского языка.
\. . найдёт все случаи, когда после точки в конце предложения есть пробел и любой другой символ.
. \W точка не экранирована и найдёт любые символы. Кроме того, \W означает «не цифра и не латинская буква», то есть выражение дополнительно найдёт буквы кириллицы.
\. [^А-я0-9] верный вариант. Найдёт все случаи, когда после точки с пробелом стоит не буква и не цифра. Можно улучшить: \. [^А-Я0-9] Тогда выражение найдёт ещё и случаи, когда в начале предложения стоит строчная буква.
\. ^[А-я0-9] некорректное выражение. Для отрицания диапазона знак карет ^ должен стоять внутри скобок.
США усилили контроль над лидирующими ИИ моделями, ученые смогли полностью прочитать античный свиток, не разворачивая его — что произошло в…
Агенты, которые самостоятельно планируют свои действия и пользуются внешними инструментами. Модели, способные работать с миллионами токенов. Системы, которые помогают сохранять…
Теперь в него входят тексты ВКонтакте — почти 11,3 млрд слов из соцсетей