Рефакторинг регулярных выражений

топ 100 блогов _winnie — 25.08.2010 Рискую быть обвинённым в капитанстве, но всё-таки. Всё-таки я часто вижу нечитабельные регулярные выражения, причем не потому, что они регулярные, а потому что автор - макака.

Копипаст в регулярных выражениях - тоже можно рефакторить и сводить к многократному использованию уже определённой абстракции.

Вот есть у нас регулярка для последовательности пробелов \s+. И есть регулярка для числа, ([-+]?[\d]+). Нам надо извлекать числа из строк вроде "+123 -123 111:222:333". Легко сочинить монстра "([-+]?[\d]+)\s+([-+]?[\d]+)\s+([-+]?[\d]+):([-+]?[\d]+):([-+]?[\d]+)". Сочинить легко, прочитать и исправить сложно. А нужно для читаемости писать код так, как он в голове, а не транслировать его в копипаст. Можно такое регулярное выражение записать вот так:

"7 7 7:7:7".replace('7', r'([-+]?[\d]+)').replace(' ', r'\s+')


Тогда проще понять что имелось ввиду, исправить регулярное выражение. Как структуру первого уровня, например заменить "7 7 7:7:7" на "7:7:7:7". Так и второго, напр. матчить не только целые числа, но и дробные 123.456.

Оставить комментарий

Архив записей в блогах:
"Покупаешь за копейки корыто, нанимаешь за копейки типа персонал, даешь говнорекламу и главное - заносишь бабла уроду в погонах/в кресле проверяющим безопасность плавсредства. ПРОФИТ! С самолетами похожая модель. С проститутками похожая ...
Навальному попросили 20 лет, приговор 4 августа, по нынешним временам скорее всего дадут - удивительно он повторил судьбу Гапона, при том, что тоже малороссиянин. Вещь удивительная: кроме Навального и Гапона вспомните Явлинского, Гоголя, петровских "украинцев" - приезжают, власть дает ...
На  большую часть продукции бренда Now Foods действует суммарная скидка 25% до сегодняшнего вечера. Сегодня расскажу о самом неуловимом варианте киноа на сайте. Охотилась на него долго и упорно. Как думаете, стоила игра свеч? Заказать можно здесь - Now Foods, Органическая ...
Ездил с утра в места обетовАния слуг народных. Места заповедные, не всякому по чину, по карману . Домики сплошь депутатские , судейские, прокурорские. Тихо, спокойно, чинно.. Участки чистенькие- ни грядочек тебе с картофаном, ни чесночка тебе, ни лучка закусочного. Чем люди закусы ...
Ленина нет. Нет более Ленина. Темные законы, управляющие работой кровеносных сосудов, оборвали эту жизнь. Медицина оказалась бессильной совершить то, чего от нее со страстью ждали, требовали миллионы человеческих сердец. Сколько бы среди них отдали не задумавшись свою кровь до последней ...