0

Это не простой вопрос «все возможные комбинации».Создайте список всех возможных комбинаций строки, основанной на регулярном выражении

EDIT: Регулярное выражение просто фиксированной длины строки с различными комбинациями альфа и не алфавитно-цифровых символов для каждого индекса ...

Учитывая регулярное выражение фиксированной длины, что бы самый быстрый способ вычисления и сохранение всех комбинаций в базе данных, скорость сохранения в базе данных. От get go, учитывая регулярное выражение, имеющее любую базу данных каждой комбинации?

То, что я делал, успешно, но смешно медленно, просто создало массив длиной регулярного выражения фиксированной длины, и каждый элемент содержал все возможные символы в этой позиции, я сгенерировал это с помощью какого-то скрипта. А затем просто сделал петлеобразование в массиве с подключением SQL Server от начала до конца, вставив по 10 вариантов за раз. Это было очень медленно, мы говорим о строке из 7/8 символов с максимум 36 возможностями в любом месте. Это заняло несколько дней.

Итак, на мой вопрос задана эта проблема: какая наилучшая комбинация технологий, языков и алгоритмов для достижения этой цели быстрее всего?

+0

Вы говорите, у вас есть регулярное выражение с помощью всего литералов? – sln

+1

Как правило, просто используйте класс символов в каждой позиции символа. Таким образом вам нужно только 1 регулярное выражение. – sln

+0

Похож на /^ [a-zA-Z0-9] [a-zA-Z0-9] [0-9 | A | a | B | b | C | c | D | d] {8}/ –

ответ

3

Количество возможных строк с длиной 8 и состоит из 36 возможных символов:

36^8 = 2821109907456 = 2,8 trillion 

Генерирование, что многие строки в любом случае будет принимать «значительное» время. Давайте посмотрим, сколько времени потребуется, чтобы вставить их в БД. Предполагая действительно хорошую производительность БД, мы можем взять 20000 вставок в секунду. В таком случае общее время вставки, как ожидается, будет:

2,8 * 10^12/20000 = 140 million seconds 
140 * 10^6/(60*60*24) = 1620 days 

Итак, это ответ на ваш вопрос, я думаю,: 1620 DAYS!

+0

Вау, это не то, что возможно. Вернемся к чертежной доске со мной! –

+0

Вопрос задает вопрос о том, как создавать все возможные комбинации. Не сколько времени потребуется для их создания? Этот Q/A полезен для других людей, которые хотят генерировать комбинации из гораздо более простого регулярного выражения, например '/ foo {1,10} /' – Bill

Смежные вопросы