Я нашел библиотеку Python, которая позволяет мне делать то, что мне нужно.
>>> import reCompiler
>>> fsa1 = reCompiler.compileRE('\d\d\d?\d?a')
>>> fsa2 = reCompiler.compileRE('123a')
>>> fsa3 = reCompiler.compileRE('a23a')
>>> print len(FSA.intersection(fsa1, fsa2).finalStates)
1
>>> print len(FSA.intersection(fsa1, fsa3).finalStates)
0
Библиотека называется pyFSA . Мне нужно будет выполнить некоторые подготовительные операции, чтобы превратить операторы типа \ d {2,4} в \ d \ d \ d? \ D?, Но в остальном это должно хорошо соответствовать моим потребностям. Спасибо за вклад, и если люди находят библиотеки, которые реализуют это на других языках, обязательно включайте их.