Lucene has had this capability for a while now. A regexp query (as defined by the RegExp class) is compiled into an automaton for quick comparison with the inverted index, also represented as an automaton. Automatons and FSTs are used extensively by Lucene these days. Out of curiosity, I did some playing around with Lucene's RegExp class when it first came out (or rather, when I first learned about it). It provides a really interesting way to build regular expressions: https://gist.github.com/mumrah/6104234
Javadoc: https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/...
Source: https://github.com/apache/lucene-solr/blob/trunk/lucene/core...