Pregunta de optimización de expresiones regulares

No soy un chico Java, por lo tanto, mis respuestas se basan en la implementación de .NET Regex. solía

"(?<=(^.*)\\G.*)(?<=\\G\\1.)"

basado en el hecho de que \sum_{i=0}^{n} 2^n = 2^{n+1} - 1. Básicamente dice "Empareja cada posición, para la cual la parte después del último partido es una más larga que la parte anterior al último partido".

Es aproximadamente el doble de rápido que su original (en .NET, de nuevo), tarda menos de 2 segundos en dividir 10.000 caracteres, y diría que es un poco más legible. Bueno ... menos ilegible. =)

¡Salud! ¡Buena pregunta! =)

Editar: Al mirar su Regex nuevamente, me parece que está utilizando el mismo enfoque, pero de una manera más complicada. Admito que no he intentado leer la tuya antes de intentar hacer mi propia solución, tanto porque me gusta un desafío como porque tu expresión regular es bastante ilegible. =) ¿Son necesarias estas búsquedas anidadas debido al motor de expresiones regulares de Java?

Respuesta 1

Realmente no lo haría. Tiraría todo y lo volvería a hacer como código de procedimiento legible.

Hay algunas cosas que realmente no deberías hacer con expresiones regulares. Este es uno de ellos. Estoy totalmente de educarme, pero ¿realmente crees que eso será útil en algún momento?

Tal vez sería mejor aprender algo que va a ser realmente útil y fácil de mantener :-)

Respuesta: 2

Conocí en nuestro proyecto el siguiente código: MyInterface var = MyClass :: new; ¿Hay alguna diferencia con MyInterface var = new MyClass (); ¿Perezoso?

Me di cuenta de que dentro de la carpeta C: \ Archivos de programa \ Java, está el JRE público que instaló el JDK, sé que esto es normal. Pero luego está la carpeta jdk1.x \ jre \ bin \ con java.exe, javaw, etc.

Acabo de comenzar a usar Apache Maven. Ahora me gustaría hacer que Maven pueda realizar implementaciones de entornos de producción y desarrollo con un solo clic. Estoy usando Eclipse (versión de Springsource) y yo ...

Aquí está mi método, funciona bien y muestra el diálogo. public void showDialog () {diálogo de diálogo final = nuevo diálogo (este); dialog.setContentView (R.layout.mylayout); dialog.show (); } Yo tengo ...