I used the PCRE library, which has pretty much all the features you expect, and it is actively maintained. Note: the heavy lifting is done by C libraries.
https://opam.ocaml.org/packages/pcre/
If you want to see how I integrated it with the interpreter the code is here:
https://github.com/briangorman/reason-mal/blob/master/reader...
And the GitHub page of the aforementioned library: https://mmottl.github.io/pcre-ocaml/
And the GitHub page of the aforementioned library: https://mmottl.github.io/pcre-ocaml/