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

топ 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.

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

Архив записей в блогах:
Всем привет!  12 октября  - этот день вошел в историю как старт всемирноизвестного фестиваля в Мюнхене, фестиваля пива , ровно  206 лет назад стартовавший Октоберфест! Все те, кто причастны и для кого слово "пиво" не является пустным звуком, фантам и увлеченными, с ...
Можно резюмировать, что митинги в России в субботу не оправдали чаяния их организаторов Ребятки фактически пошли ва-банк. Посчитав, что информационное поле достаточно раскачано, польстившись на миллионы просмотров и лайков под роликами Навального (значительная часть которых ...
– В общем, забрал ее с новорожденной дочкой из роддома, привез домой, – грустно рассказывала в электричке женщина лет сорока пяти приятельнице. – В квартире, Таня говорит, идеальный порядок, не знаю, сам убирался, или мать его приходила, или нанимали кого. Кроватку собрал, застелил, ...
Есть книги, чтение которых убивает время. Но есть, увы, и такие, чтение которых ...
Две недели в деревне пролетели незаметно. Правда, был у меня там серьезный эксцесс с котом, но я об этом рассказала в ФБ и не хочу повторяться тут. Первые четыре дня я провела в покое, потом приехали мои кумовья самоусыновленные с крестником, а еще на следующий день дочь с внучкой за ...