Это мощная и хитрая задача с подколками. Идеальна для проверки знаний по регуляркам. Автор — мой коллега Егор Симонов, крутой технический специалист.
Если хотите обучить сотрудника регулярным выражениям, дайте ему:
Если хотите обучить сотрудника регулярным выражениям, дайте ему:
- Книгу Бена Форта — «Регулярные выражения 10 минут на урок»
- Задачку от Егора
У нас на работе ровно так и делают
Когда я пришла в ХФЛабс, мне сказали к концу испытательного срока сдать Егору задачи по SQL и регулярным выражениям. На тот момент я немного знала SQL — в реальной жизни не применяла, но меня программист научил всяким джойнам. Регулярки не знала вообще.
И вот мне книжку дали, я ее честно прочитала. Читается книга легко. Повторяешь все за автором — вообще элементарно! Так что «фигня вопрос, sql знаю, регулярки тоже, успею!». Откладывала задания, пока до делайна не осталась неделя. Или две? Не помню точно, помню только, что не успела :)
И если на SQL я всю голову сломала, не понимая, как его решить, то задача по регуляркам исходно казалась простой. Начала делать — да вообще не проблема. Наоборот, интересненько! Видишь «что было, что стало», пишешь regexp. Работает! Прикольно!
Ага, прикольно и легко... Первые 3-4 регулярки. А потом начинаются проблемы из-за условия «правила применяются ко всем данным, а не выборочно». Эх, а жаль! На каждую строчку отдельно написать регулярку легко, а вот сделать один, не сломав другой — уже проблема...
Сдать «как получилось» не прокатит. Егор быстро увидит косяки в твоих регулярках:
— Вот тут дом потеряла, а там квартиру.
И смотрит хитро:
— Не работает!
— Ну-у-у-у-у-у, Егор! Ну как тут по другому то написать!!!
— Думай!
В общем, делала я это задание еще месяц. Периодически ходила к Егору консультироваться. Как надо сделать, он не говорил, но объяснял, почему моя запись не срабатывает. Было сложно! Но интересно =))
А за сколько времени вы сможете решить эту задачку?
Только не надо присылать мне ответ или писать его тут в комментариях, спойлеры все удалю!
Проверить себя вы можете сами, для этого:
- Написали список правил
- Взяли список исходных адресов, скопировали себе куда-то, в блокнот, например
- Применили ко всему списку правило 1
- Применили ко всему списку правило 2
- ...
- Применили последнее правило (ко всему списку, уже N раз измененному)
- Сверили результат с колонкой «Что надо получить», обращая внимание на комментарии. Ничего не потерялось?
- Если потерялось / испортилось, то находим баг в регулярках, исправляем, и повторяем все шаги с самого начала =)
Под конец напомню ссылочку на конфлюенс — Задание по регулярным выражениям от Егора. В блог переносить не буду, табличка ужасно выглдяит при переносе, надо скролить вниз, чтобы проскролить вправо... Так что переходите по ссылке =)
PS — добавила на Testbase в навык автоматизации
Если вы для решения какой либо проблемы решили применить регулярное выражение, то у вас стало на одну проблему больше
ОтветитьУдалитьДа да, разумеется, регулярки полностью устарели и вымерли как класс, и не применяются никак и нигде (спойлер — нет)
Удалить