Мне просто интересно, есть ли там свободное программное обеспечение, способное эффективно минимизировать регулярные выражения.Программы/Калькуляторы для минимизации регулярных выражений
ответ
Вы видите, что этот вопрос задают много, но я не видел эффективного нигде. Если вы считаете, что логика требует просто упростить что-то простое, как диапазоны символов в классе символов, - и довольно низкая ценность делать что-то подобное, я думаю, что отсутствие этих вещей начинает иметь смысл.
В качестве другого примера, как удалить ненужные группировки, когда вы не знаете, как они могут использоваться в заменяющей строке. Я думаю, что любое упрощение, которое может быть достигнуто, будет в основном поверхностным.
Этот парень написал один в Haskell, но не разделял: http://community.haskell.org/~ndm/resimplify/
(PS: Я вроде соврал - есть один эффективный Regex упрощение инструмента ... Механический турок, который Stack Overflow :)
+1 для механического турка :-) – Bergi
Упрощение можно сделать, и это часто полезно. Я долго работал над инструментом упрощения на предыдущей работе, но, к сожалению, меня больше нет, и у них есть код.= (Основная идея состоит в том, что вы можете упростить части NFA, чтобы превратить их в DFA, которые работают намного эффективнее. Однако вам обычно приходится останавливаться на границах захватной группы. –
Я думаю, я нашел один здесь: http://regexvisualizer.apphb.com/?Regex=%28a%2Bb%2Bc%2B%29%2B%7Cabc&NfaSize=300&DfaSize=250#
Nice. Закладка. – Matthew
Не кажется для работы со сложным регулярным выражением - и по комплексу я имею в виду что-то вроде '[^ \ s \ d + \ -.,:;^\ /] + (?: \^\ d + (?: $ | (? = [\ s: ?.?; \ /]))) (: \/[^ \ S \ d + \ -,:;^\ /] + (: \^\ d + (: $ | (= [\ s :; \ /])))) * ' –
Зачем нужно «минимизировать» регулярные выражения? – Bergi
StackOverflow не является рекомендательным или местным сайтом. Google и Bing - оба специалиста, которые выполняют поиск вещей и возвращают ссылки на результаты этого поиска. (Поиск программ также неуместен здесь, потому что это не вопрос программирования, это поиск программного продукта, и это будет вопросом, который подходит для [SuperUser] (http://superuser.com).) Голосование закрывается как выключенное тема. –
Поиск программы/алгоритма/подхода к минимизации RegEx лучше всего подходит, чем суперпользователь. Я согласен, что этот вопрос является широким и определенно плохо сформулированным, но не согласен с оценкой его перемещения или что лучше ответить в другом месте. – Matthew