Найти строку как минимум с n совпадающими элементами

У меня есть список номеров, которые я хочу найти по крайней мере 3 из... вот пример

У меня большой список номеров в базе данных sql в формате (например)

01-02-03-04-05-06
06-08-19-24-25-36

и т. д. в основном 6 случайных чисел от 0 до 99.

Теперь я хочу найти строки, в которых встречается как минимум 3 из набора заданных чисел. Например:

дано: 01-02-03-10-11-12 вернуть строки, в которых хотя бы 3 из этих чисел. например

01-05-06-09-10-12 would match
03-08-10-12-18-22 would match
03-09-12-18-22-38 would not

Я думаю, что мог бы быть какой-то алгоритм или даже регулярное выражение, которое могло бы соответствовать этому... но мой недостаток опыта учебника информатики сбивает меня с толку, я думаю.

Нет, это не домашнее задание! Это для реального применения!

Я развиваюсь в ruby, но любой языковой ответ был бы оценен

1 ответ

Решение

Вы можете использовать замену строки для замены - с | превратить 01-02-03-10-11-12 в 01|02|03|10|11|12, Затем оберните это так:

((01|02|03|10|11|12).*){3}

Это позволит найти любую из пар цифр, а затем игнорировать любое количество символов... 3 раза. Если это соответствует, тогда успех.

Другие вопросы по тегам