- 1
\d+[\+-x\*]\d+\d+[\+-x\*\d+
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+117
\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+". Печально, когда человек, день знакомый с регулярками, находит в их примерах ошибки(
Дальше читать не сто́ит. Но я дочитаю! Где закрывающая скобка? По-моему, это не говнокод, а тупо ошибка при наборе документа.
Экранирование в стиле "а вдруг?")
Пофиксил.
http://habrahabr.ru/post/168591/
http://habrahabr.ru/post/175847/
... как пример того, что есть задачи, к которым регулярки лучше не применять.
Кстати, когда эта статья вышла, я хотел запостить сюда цитату из неё:
Уже не помню, но по-моему, я именно для этого и зарегистрировался здесь. Но меня остановило недельное ограничение на комментирование :)
Что интересно, тогда статью разумные люди обошли стороной, а комментировали типичные пользователи. Некоторые из них даже указали, что некоторые повторные слова скрипт не ловит, но на причину не указали. И на гитхабе до сих пор не исправлено.
Попей чайку, Иди, чаю попей, чаехлёб и т.д.
Конечный автомат - типичное решение для парсинга, так что все ок.
Конечный автомат (в его математической формулировке, в которой он и эквивалентен регуляркам) может распарсить далекооо не все. И не для каждой задачи он удобен.
Например любая рекурсия типа XML и все, регулярки\автомат сливаются. И нужно что-то типа автомата с магазинной памятью.
P.S. Но всем похуй, и большинство программистов любую хуйню со свичом называют конечным автоматом ;)
У тебя есть выбор? Значит ты конечный автомат!