Sé que puedo hacer coincidir números con Pattern.compile("\\d*");
¿Cómo hacer coincidir un largo con expresiones regulares de Java?
Pero no maneja los valores máximos/mínimos largos.
Para problemas de rendimiento relacionados con excepciones, no quiero intentar analizar el largo a menos que realmente sea un largo.
if (LONG_PATTERN.matcher(timestampStr).matches()) {
long timeStamp = Long.parseLong(timestampStr);
return new Date(timeStamp);
} else {
LOGGER.error("Can't convert " + timestampStr + " to a Date because it is not a timestamp! -> ");
return null;
}
quiero decir que no quiero ningún bloque try/catch y no me quiero conseguir excepciones planteadas desde hace mucho como "564654954654464654654567879865132154778", que se encuentra fuera del tamaño de una normal Java larga.
¿Alguien tiene un patrón para manejar este tipo de necesidad para los tipos primitivos de Java? ¿El JDK proporciona algo para manejarlo automáticamente? ¿Hay un mecanismo de análisis de fallas en Java?
Gracias
Editar: favor suponer que la "mala cadena larga" no es un caso excepcional. No estoy pidiendo un punto de referencia, estoy aquí para una expresión regular que representa una larga y nada más. Soy consciente del tiempo adicional requerido por la comprobación de expresiones regulares, pero al menos mi análisis largo siempre será constante y nunca dependerá del% de "cadenas largas incorrectas"
No puedo encontrar el enlace de nuevo pero hay un buen benchmark de análisis en StackOverflow que muestra claramente que reutilizar la expresión regular compilada es la más rápida, mucho más rápida que lanzar una excepción, por lo tanto, solo un pequeño umbral de excepciones haría que el sistema fuera más lento que con la verificación adicional de expresiones regulares.
Tenga en cuenta que '" \\ d * "' también coincide con las cadenas vacías. –
Posiblemente [su pregunta ya ha sido solicitada] (http://stackoverflow.com/questions/2563608/check-whether-a-string-is-parsable-into-long-without-try-catch). En mi opinión, las excepciones serán más rápidas que las expresiones regulares. – Sorrow
@Sorrow: Buena captura en la pregunta anterior. Re excepciones vs. expresiones regulares: ¿Qué te hace pensar eso? Lanzar excepciones no es un proceso rápido. Una vez compiladas, las expresiones regulares son bastante rápidas. –