1. Куча / Говнокод #13560

    +117

    1. 1
    \d+[\+-x\*]\d+\d+[\+-x\*\d+

    Даже не говнокод, а фиг знает что. Решил сегодня поизучить регеспы, почитал пару мануалов, зашел на MSDN

    http://msdn.microsoft.com/ru-ru/library/az24scfc.aspx

    А там этот пример. И указано что он находит "2+2" и "3*9" в "(2+2) * 3*9"

    Я подозреваю, что они хотели написать @"\d+[+-\\*]\d+". Печально, когда человек, день знакомый с регулярками, находит в их примерах ошибки(

    Запостил: kegdan, 06 Августа 2013

    Комментарии (35) RSS

    • \d+\d+

      Дальше читать не сто́ит. Но я дочитаю! Где закрывающая скобка? По-моему, это не говнокод, а тупо ошибка при наборе документа.
      Ответить
      • Явно опечатка, но на то у них и админы, что бы такой фигни не было.
        Ответить
      • что буквально означает: найти все цифры, минимум одну, потом еще одну (поскольку остальные съел предыдущий)
        Ответить
        • Ну т.е. минимум 2 цифры. Может быть автор просто не знал, как это записать по-нормальному? :)
          Ответить
          • Больше похоже на опечатку: во второй копии не хватает квадратной скобки. Вероятно, автор хотел стереть вторую копию, а стёр только скобку.
            Ответить
      • В жпж.
        Ответить
    • Ну неудачный пример да еще и с опечаткой, можно было обойтись \d+[+*]\d+, а пример должен быть типа \d+[\+\-\*\\]\d+ заэкранировали все нафиг.
      Ответить
      • > \d+[\+\-\*\\]\d+

        Экранирование в стиле "а вдруг?")
        Ответить
        • Экранирование\ в\ стиле\ \"а\ вдруг\?\"\)

          Пофиксил.
          Ответить
        • Это пример в стиле "показать что за фрукт этот символ \"
          Ответить
          • Показали бы тогда \d+\.\d+\$ на тексте 33.33$ 3333
            Ответить
          • Это издевательство. :) Ваш комментарий вызывает чувство дискомфорта из-за незакрытых кавычек. :) Точно как и незакрытые квадратные скобки в посте.
            Ответить
    • Про сабж ничего не сказанного выше не скажу, но для тренировки вам, возможно, будет интересен http://regexcrossword.com/
      Ответить
      • Спасибо за ссылку, занятная вещица)
        Ответить
      • А еще есть нечто похожее? А то там все кончилось
        Ответить
      • Я уже сам нашел. Всем рекомендую)

        http://habrahabr.ru/post/168591/
        Ответить
        • Решил. Вот оно же, но интерактивное

          http://habrahabr.ru/post/175847/
          Ответить
    • В тред про изучение регекспов надо обязательно добавить немного http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
      Ответить
      • > надо обязательно добавить...
        ... как пример того, что есть задачи, к которым регулярки лучше не применять.
        Ответить
        • Как пример можно работу с языком, на котором люди говорят http://habrahabr.ru/post/180241/
          Кстати, когда эта статья вышла, я хотел запостить сюда цитату из неё:
          text = text.replace(/(О|А|При)фигеть/g, "С ума сойти");
          text = text.replace(/(о|а|при)фигеть/i, "с ума сойти");

          Уже не помню, но по-моему, я именно для этого и зарегистрировался здесь. Но меня остановило недельное ограничение на комментирование :)
          Что интересно, тогда статью разумные люди обошли стороной, а комментировали типичные пользователи. Некоторые из них даже указали, что некоторые повторные слова скрипт не ловит, но на причину не указали. И на гитхабе до сих пор не исправлено.
          Ответить
          • Про отчество "Олеговна", заменяемое на "Оледерьма" просто убило :)
            Ответить
          • P.S. Был у нас как-то в ИРЦе бот, который кикал с канала за маты, так мы там соревновались, кто больше разных матоподобных слов (не входящих в белые списки бота) придумает: "гребля", "подстрахуй", "учёба" и т.п.
            Ответить
            • grep словарь?
              Ответить
              • Это ж как-то неспортивно. Думаю, даже типичные айтишники-скриптописцы себе бы такого не позволили. Хотя, да. Я не bormand, я не знаю.
                Ответить
                • Не, по-честному придумывали, не подглядывая в словарь.
                  Ответить
            • А я вспомнил чатик, в котором «бля» в любом слове заменялось на «я дурак», а ещё в том чатике был бот, загадывающий загадки. Внезапно бот загадывает загадку про холодное оружие. Я отвечаю, вместо своего ответа вижу: «сая дурак». Через пару минут ответ бота: «Правильный ответ не угадал никто. Правильный ответ: сая дурак».
              Ответить
            • Помню в одном чате вместо "хуй" писали "чай"
              Попей чайку, Иди, чаю попей, чаехлёб и т.д.
              Ответить
        • >как пример того, что есть задачи, к которым регулярки лучше не применять.
          Конечный автомат - типичное решение для парсинга, так что все ок.
          Ответить
          • > Конечный автомат - типичное решение для парсинга, так что все ок.
            Конечный автомат (в его математической формулировке, в которой он и эквивалентен регуляркам) может распарсить далекооо не все. И не для каждой задачи он удобен.

            Например любая рекурсия типа XML и все, регулярки\автомат сливаются. И нужно что-то типа автомата с магазинной памятью.

            P.S. Но всем похуй, и большинство программистов любую хуйню со свичом называют конечным автоматом ;)
            Ответить
            • > Но всем похуй, и большинство программистов любую хуйню со свичом называют конечным автоматом ;)

              У тебя есть выбор? Значит ты конечный автомат!
              Ответить
    • - Ага и что делали тут вдвоем? Рыбу ловили, да?
      Ответить

    Добавить комментарий