Как можно жить без регулярных выражений? Неужели кто-то умеет обходиться без них?
В тексте нужно найти: "еврейская мама" или "у еврейской мамы" или "еврейская мать".
Делаем: "еврейск.{3,10}ма". (Пределы у меня приблизительны, само собой.)
Или нужно найти: "зеленый театр" или "в зеленом театре" или "из зеленого театра". А еще и по-украински: "зелений театр".
Делаем: "зел(е|ё)н.{1,5}театр". (Тут тоже приблизительно.)
"Смена обстановки", "сменить обстановку", "я сменил обстановку", "нужно сменить обстановку", "смена обстановки".
Делаем: "смен.{1,5}обстановк"
Разные варианты написания "Михайловский собор", "Мих. собор", "Михайл.собор", а еще и по-украински ("Михайлівський"): "Мих.{1,15}собор".
"Общага №4", "общежитие #4", "в общаге номер 4": "общ.{3,15}4".
TL;DR: два слова на русском языке со всеми окончаниями/склонениями/падежами, и при этом недалеко друг от друга.
О том, как лучше учить regexp-ы (на англ.)
Еще: ищем "провокац..." или "провоцир...": "прово(цир|кац)".
"Конфорка" или "комфорка"? "ко(м|н)форка".
Как правильно? "Флоровский монастырь"? Или "Фроловский монастырь"? В Киеве я постоянно слышу оба варианта. Можно искать так: "Ф(р|л)о(р|л)овский" (хотя будут неожиданные побочные эффекты).
А если кто-то (вроде меня) ошибочно пишет то "обходится", то "обходиться", и нужно найти оба варианта: "обходить?ся" или "обходит.?ся". Или: "съезд", "сьезд" или "с'езд" (по украински бывает и с апострофом): "с.езд".
Как правильно писать --- "не искренне"? Или "неискренне"? И сколько букв "н"? Может быть вы и знаете, как правильно, но всегда есть масса текстов с ошибками. Ищем так: "не ?искренн?е".
Как только не пишут этот термин: "пауэрбанк", "повэр бэнк", "повер-банк". Ищем: "п(а|о)(в|у)(е|э)р( |\-)?б(а|э)нк".
"Габриелла", "Габриэла": "Габри(е|э)лл?а".
Ира, Ирка, Иринка, Ирина: "Ир(ин)?к?а".
Ира, Ирка, Иринка, Ирина, Ируся, Ируська: "Ир(а|ка|ина|инка|уся|уська)".
Разные варианты написания фамилии Раймонда Смаллиана: "Шмульян", "Смаллиан", "Смуллиан", "Смалиан", "Смулиан", "Смульян", "Смальян": "(С|Ш)м(а|у)лл?и?ь?(а|я)?н".
Разные варианты написания Sennheiser: "сенн?х(е|а)йзер".
"Виктор Цой", "В.Цой", "у В.Цоя": "В.{1,6}Цо(й|я)".
А если я никак не могу точно запомнить название "Марии́нский парк", а еще и хочу искать названия и на русском и на украинском ("Марії́нський парк"): "Мар{1,10}парк".
Юзая регэкспы я так ищу что мне нужно в русскоязычных текстах, в т.ч. в худ.лите.
В качестве домашнего задания, можете отрендерить эти регулярные выражения для наглядности, как я делал это тут. И найти regexp-ы для слов вроде "бессонница", "галлюцинация", "коммуналка".
Yes, I know about these lousy Disqus ads. Please use adblocker. I would consider to subscribe to 'pro' version of Disqus if the signal/noise ratio in comments would be good enough.