воскресенье, 3 мая 2020 г.

Задание по регулярным выражениям от Егора

Это мощная и хитрая задача с подколками. Идеальна для проверки знаний по регуляркам. Автор — мой коллега Егор Симонов, крутой технический специалист.

Если хотите обучить сотрудника регулярным выражениям, дайте ему:
  1. Книгу Бена Форта — «Регулярные выражения 10 минут на урок»
  2. Задачку от Егора
У нас на работе ровно так и делают Wink ;)


Когда я пришла в ХФЛабс, мне сказали к концу испытательного срока сдать Егору задачи по SQL и регулярным выражениям. На тот момент я немного знала SQL — в реальной жизни не применяла, но меня программист научил всяким джойнам. Регулярки не знала вообще.

И вот мне книжку дали, я ее честно прочитала. Читается книга легко. Повторяешь все за автором — вообще элементарно! Так что «фигня вопрос, sql знаю, регулярки тоже, успею!». Откладывала задания, пока до делайна не осталась неделя. Или две? Не помню точно, помню только, что не успела :)

И если на SQL я всю голову сломала, не понимая, как его решить, то задача по регуляркам исходно казалась простой. Начала делать — да вообще не проблема. Наоборот, интересненько! Видишь «что было, что стало», пишешь regexp. Работает! Прикольно!

Ага, прикольно и легко... Первые 3-4 регулярки. А потом начинаются проблемы из-за условия «правила применяются ко всем данным, а не выборочно». Эх, а жаль! На каждую строчку отдельно написать регулярку легко, а вот сделать один, не сломав другой — уже проблема...

Сдать «как получилось» не прокатит. Егор быстро увидит косяки в твоих регулярках:

— Вот тут дом потеряла, а там квартиру. 

И смотрит хитро:

— Не работает!
— Ну-у-у-у-у-у, Егор! Ну как тут по другому то написать!!!
— Думай!

В общем, делала я это задание еще месяц. Периодически ходила к Егору консультироваться. Как надо сделать, он не говорил, но объяснял, почему моя запись не срабатывает. Было сложно! Но интересно =))

А за сколько времени вы сможете решить эту задачку? Wink ;)
Только не надо присылать мне ответ или писать его тут в комментариях, спойлеры все удалю! 

Проверить себя вы можете сами, для этого:
  1. Написали список правил
  2. Взяли список исходных адресов, скопировали себе куда-то, в блокнот, например
  3. Применили ко всему списку правило 1
  4. Применили ко всему списку правило 2
  5. ...
  6. Применили последнее правило (ко всему списку, уже N раз измененному)
  7. Сверили результат с колонкой «Что надо получить», обращая внимание на комментарии. Ничего не потерялось?
  8. Если потерялось / испортилось, то находим баг в регулярках, исправляем, и повторяем все шаги с самого начала =)
Под конец напомню ссылочку на конфлюенс — Задание по регулярным выражениям от Егора. В блог переносить не буду, табличка ужасно выглдяит при переносе, надо скролить вниз, чтобы проскролить вправо... Так что переходите по ссылке =)

PS — добавила на Testbase в навык автоматизации

2 комментария:

  1. Если вы для решения какой либо проблемы решили применить регулярное выражение, то у вас стало на одну проблему больше

    ОтветитьУдалить
    Ответы
    1. Да да, разумеется, регулярки полностью устарели и вымерли как класс, и не применяются никак и нигде (спойлер — нет)

      Удалить