Экранирование символов, волшебная точка и поиск всего чего угодно. Продолжение серии уроков по регулярным выражениям
© 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] некорректное выражение. Для отрицания диапазона знак карет ^ должен стоять внутри скобок.
Компания Google представила много новых ИИ-продуктов, а модель GPT опровергла известную математическую гипотезу Пала Эрдёша — рассказываем, что произошло в мире ИИ за последнее время
Facebook* и Instagram* будут сканировать фото и видео, чтобы находить детей, которые скрыли свой возраст
Можно ли заниматься NLP, если при словах «производная» и «матрица» хочется закрыть ноутбук? Да — если изучать математику не абстрактно, а через реальные задачи. Объясняем, какие разделы действительно нужны джуну,…