Я разрабатываю небольшой проект с Рубином на Rails рамках/PostgreSQL в качестве БД, и мне нужно хранить несколько регулярных выражений в таблицу, как это:Идентифицировать конфликтующие регулярные выражения
------------------------
pattern direction
-----------------------
1\d{3} client1
2\d{3} client2
31\d{2} client3
32\d{2} client4
4 client5
-----------------------
Каждый шаблон будет начать с одной или несколькими определенными цифрами, и продолжаются «неизвестными» цифрами (от 0 до 255 дополнительных цифр).
Люди добавят новые пары в эту таблицу с помощью графического интерфейса, и я бы хотел избежать пересечения, поэтому для моего примера 3 \ d {3} не следует добавлять, потому что он пересекается с 31 \ d { 2} и 32 \ d {2}.
Можно ли проверить существующие выражения для пересечения перед добавлением нового в таблицу DB?
Кроме того, в GUI пользователи будут видеть эти шаблоны как 1XXX, 2XXX, 31XX. Я не люблю показывать им выражения. Может быть, мне не нужно использовать регулярные выражения? Но мне нужно будет искать наиболее подходящий шаблон по определенному числу, например, запрос с номером 3291 должен вернуть мне «client4», запрос «4» должен вернуть «client5».
Какова наилучшая практика в моем случае?
Сколько «неизвестных» допустимо в шаблоне (макс.)? –
255 в идеальном случае, но может быть опущен не менее 30. –
ОК, с этим мною я бы придерживался вашего текущего метода хранения и перевел '32 \ d {2}' на '32XX' на ввод/вывод. У меня также есть идея для вашего вопроса ... –