Если вы работаете с чистыми регулярными выражениями (без обратных ссылок или других функций, которые заставляют их распознавать контекстно-зависимые или более сложные языки), то то, что вы просите, возможно.
Что вы можете сделать, это преобразовать каждое регулярное выражение в DFA, а затем (поскольку обычные языки закрыты на пересечении) объединить их в DFA, который распознает
пересечение двух языков. Если этот DFA имеет путь от начального состояния к принимающему состоянию, эта строка принимается обоими входными регулярными выражениями.
Проблема в том, что первый шаг обычного алгоритма регулярных выражений-> DFA состоит в том, чтобы
преобразовать регулярное выражение в NFA, затем преобразовать NFA в DFA. Но этот последний шаг может
приведет к экспоненциальному увеличению числа состояний DFA, так что это будет только
выполнимо для очень простых регулярных выражений.
Если вы работаете с расширенным синтаксисом регулярных выражений, все ставки отключены: языки без контекста
не закрыты на пересечении, поэтому этот метод не будет работать.