Подтвердить что ты не робот

Обратные регулярные выражения для генерации данных

В одном из подкастов StackOverflow (тот, где ребята обсуждали создание данных для тестирования БД - # 11 или # 12), Джефф упомянул что-то вроде "обратных регулярных выражений", которые используются именно для этой цели: если задано регулярное выражение, создайте строку, которая в конечном итоге будет соответствовать указанному регулярному выражению.

Каков правильный термин для всей этой концепции? Является ли это общеизвестной концепцией?

4b9b3361

Ответ 1

Модуль Perl String::Random (в CPAN) делает это. Принимает подмножество регулярных выражений и выполняет случайное прохождение через него.

Ответ 2

Аннотация: Рекурсивная сеть переходагенератор постмодернизма как интересный пример)

Одна специализация будет вашим "обратным регулярным выражением".


Что касается терминологии: регулярное выражение представляет собой форму грамматики, которая описывает все слова, принадлежащие определенному правильному языку (а именно все входы, соответствующие выражению).

Поэтому можно было бы называть ваш вопрос: "Как создать случайное слово, которое соответствует заданному регулярному выражению" или "Как получить случайное слово, принадлежащее указанному правильному языку".

Ответ 3

Нет такого понятия, как "обратное регулярное выражение". Регулярное выражение просто таково: выражение. Он выражает язык, который состоит из (возможно, бесконечного) набора строк.

Реверсирование заключается в использовании выражения: где он обычно используется для сообщения о том, является ли строка на языке, теперь она используется для создания строк на языке.

Ответ 4

Абсолютно возможно генерировать данные из регулярных выражений. В этой области разрабатываются некоторые проекты с открытым исходным кодом.

Учебник о как генерировать случайный пароль из regex объяснит вам, как это делается. xeger (реверс, проект с открытым исходным кодом) используется в учебнике. Прочтите учебник, чтобы узнать больше.