test - ¿Existe una biblioteca de expresiones regulares similar a RE2 para Java?
google re2 test (3)
Aquí hay un paquete de autómatas de estado finito para Java: www.brics.dk/automaton ; también vea este artículo . Aquí hay un ejemplo simple:
RegExp r = new RegExp("ab(c|d)*");
Automaton a = r.toAutomaton();
String s = "abcccdc";
System.out.println("Match: " + a.run(s)); // prints: true
¿Alguien se encontró con la versión de Java de la biblioteca de expresiones regulares de Google RE2 o una biblioteca de Java con capacidades similares y buen rendimiento? El requisito de rendimiento es el tiempo lineal con respecto a la duración de la expresión regular y la longitud del texto de entrada.
Aclaración
La mayoría de las implementaciones de expresiones regulares utilizan un algoritmo de retroceso para coincidir con el texto de entrada y, por lo tanto, son exponenciales en algunas expresiones regulares simples como (.*).(.*).(.*).(.*)
. RE2 es una biblioteca de Google que resuelve este problema utilizando un algoritmo que varía linealmente con el tamaño de entrada utilizando los conceptos de la teoría de Autómatas. El consultante quiere saber si existen bibliotecas para Java basadas en este algoritmo.
Google lanzó hoy un puerto de Java puro de la implementación RE2 de Go. Lo puedes encontrar aquí:
La búsqueda de Google produjo esto.
github.com/logentries/re2-java
dice que solo es compatible con Linux de 64 bits.
Editar: Creo que ahora hay una mejor respuesta disponible, según la respuesta de Alan Donovan, ya que Google lanzó un puerto de RE2 https://github.com/google/re2j