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

топ 100 блогов _winnie25.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.

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

Архив записей в блогах:
Когда финансовая пирамида прекращает свой рост? А когда рушится? Однажды наступило время когда советская система сберкнижек упёрлась основанием в  земную твердь. Далее последовало неизбежное расползание основания, после которой столь же неизбежно должна была рухнуть и сама ...
30 августа 2023 года в Калининграде на АО «Прибалтийский судостроительный завод «Янтарь» (входит в состав АО «Объединенная судостроительная корпорация») состоялась торжественная церемония первого подъема Военно-Морского флага на океанографическом исследовательском судне «Евгений ...
После победы народного фронта сторонники левых собрались в Париже на площади Республики. Поглядите какие у них флаги. Франция празднует второе обретение независимости. "Eсли они проиграют- Париж будет гореть, если они выиграют- Париж будет гореть"- предсказывали коментаторы. Так и ...
По мотивам поста вот этого - ru-hockey.livejournal.com/1274197.html , и высера вот этого - http://www.iihf.com/channels-11 от некоего журналиста Лукаса Экройда. Список русских защитников за все времена (точнее за последние 40 лет), которые играли на уровне ЧМ и ...
Дребежжите, генералы НАТО! Если вы ещё живы. За DVD! ...