Разбор пользовательского синтаксиса шаблона генерации строк - PullRequest
0 голосов
/ 19 декабря 2009

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

  • Пользователь пишет шаблон, что-то вроде "[a-z][0-9]{0,2}", и передает его в качестве ввода
  • Он анализируется программой и переводится в набор перестановок, которые он представляет, т.е.
    'a', 'a0', 'a00' ... 'z99'

Эти шаблоны будут различаться по сложности, в основном все, что может появиться в имени файла URL, должно быть учтено. Язык - либо Java, либо PHP, но примеры на любом языке или абстрактная / концептуальная помощь приветствуются.

Мои вопросы:

  1. С чего начать с реализации «парсера» для вышеперечисленного

и, что менее важно,

  1. Как программно перевести разобранные сложные шаблоны в строки

1 Ответ

0 голосов
/ 19 декабря 2009

Здесь есть хороший ответ: SO: / генерировать все перестановки текста из регулярного выражения в c

Суть в том, что ... определите, что вам действительно нужно, и придумайте, как остановить то, что вам нужно, и максимально сузить диапазон поиска, потому что вы заигрываете с быстро растущим числом. перестановок. «все, что может появиться в имени файла URL, должно быть учтено». не собирается сокращать это. Например, если вы ограничиваете себя английскими символами и цифрами, для строки длиной 6 символов вы просматриваете более 2 миллиардов комбинаций. Для каждого дополнительного символа умножьте на 36.
Если вы используете ISO 8859, вы получите более 274 триллионов комбинаций, а Unicode - более 745 триллионов триллионов.

...