Я хотел бы выяснить (во время выполнения), пересекаются ли два регулярных выражения (т.е. если они существуют, существует одна или несколько строк, совпадают с обоими регулярными выражениями).
Алгоритм должен быть довольно быстрым, поскольку мне нужно перебрать базу данных и проверить существующие значения.
Нашли немного теории по этому поводу, но не нашли реализации?





Очевидным решением было бы преобразовать регулярные выражения в DFA, вычислить пересечение DFA (тривиально) и посмотреть, может ли полученный DFA что-нибудь принять (также тривиально). Единственная сложная часть - это преобразование регулярных выражений в DFA, что требует некоторой работы.
Вот реализация на Haskell, использующий частные производные регулярных выражений. Комментарий к этому сообщению указывает на проблему с подходом в ответе Криса Додда.
Как насчет проверки сначала одного, а затем другого с вводом, который прошел первым?
Oracle или SQL db? Oracle поддерживает регулярные выражения, а SQL - нет.