/ / Error de expresión regular de Java - Java, regex

Error de expresión regular de Java - Java, regex

Tengo la siguiente expresión regular:

^(MIN|MAX|SUM|AVERAGE):[(\d+(\.\d+)?), ]+$

La regla que estoy intentando implementar debería permitir solo cadenas de caracteres del siguiente formato:

OPERATION: (comma separated list of integers or real numbers)

Por ejemplo, se debe permitir lo siguiente:

MIN: 7, 89.7, 67
AVERAGE: 67.9, 89, 9

Sin embargo, acepta entrada del formulario.

MAX: ,

¿Cómo puedo evitar tener espacios en blanco a ambos lados de la coma para ser aceptado?

Respuestas

0 para la respuesta № 1

Tratar

"^(MIN|MAX|SUM|AVERAGE)\s?:\s?(\d+(\.\d+)?)(,\s?\d+(\.\d+)?)*$"

Pruebas:

MIN:4: true
MIN:4,4: true
MIN:4, 5: true
MIN:4 , 5: false
MIN: 7, 89.7, 67: true
AVERAGE: 67.9, 89, 9: true
MAX: , : false

1 para la respuesta № 2

Puedes usar este regex

^(MIN|MAX|SUM|AVERAGE):s*d+(.d+)?(s*,s*d+(.d+)?)*$

1 para la respuesta № 3

Las clases de caracteres no pueden contener construcciones de expresiones regulares, como ha intentado.

Este es un giro ligeramente diferente en las otras respuestas que resultan en una expresión regular más pequeña:

(MIN|MAX|SUM|AVERAGE): \d+(\.\d+)?(, \d+(\.\d+)?)*

El don "t necesita el liderar y arrastrar ^ y $ - Están implicados.

Usar:

if (str.matches("(MIN|MAX|SUM|AVERAGE): \d+(\.\d+)?(, \d+(\.\d+)?)*") {
// yes, format is OK
}

0 para la respuesta № 4

esto aceptará cualquiera de sus "operaciones", el ":"y cualquier número / punto, separados por comas, con o sin espacios antes del primer número o después de cualquier coma. También evitará que su línea termine con una coma.

Pattern pattern = Pattern.compile("^(MIN|MAX|SUM|AVERAGE):\s?(\d+?(\.\d+?)?,?\s?)+?\d$");

-1 para la respuesta № 5

Tiene un espacio en blanco en su patrón, por lo que tendría que modificarlo un poco, la alteración más rápida sería esta, de modo que aún puede tener espacios en blanco entre los elementos de la lista:

"^(MIN|MAX|SUM|AVERAGE):[(d+(.d+)?)][(d+(.d+)?), ]+$"