matriz de cadenas dividida en Java usando expresiones regulares

Charles Morin:

Estoy tratando de dividir esta cadena:

aba (2) bb (52) GC (4) d (2) Fe (14) f (6) g (8) h (4) 5 (6)

lo que parece que esta matriz:

[A, b, a (2), b, b (52), g, c (4), d (2), f, e (14), f (6), g (8)]

Estas son las reglas, se puede aceptar letras A a G , que puede ser una letra sola, pero si hay paréntesis a continuación de ella, tiene que incluirlos y su contenido. El contenido de los paréntesis debe ser un valor numérico .

Esto es lo que he intentado:

content = "aba(2)bb(52)gc(4)d(2)fe(14)f(6)g(8)h(4)5(6)";
        a = content.split("[a-g]|[a-g]\\([0-9]*\\)");
        for (String s:
             a) {
            System.out.println(s);
        }

Y aquí está la salida

(2)

(52)

(4) (2)

(14) (6) (8) h (4) 5 (6)

Gracias.

Wiktor Stribiżav:

Es más fácil para que coincida con estas subseries:

String content = "aba(2)bb(52)gc(4)d(2)fe(14)f(6)g(8)h(4)5(6)";
Pattern pattern = Pattern.compile("[a-g](?:\\(\\d+\\))?");
List<String> res = new ArrayList<>();
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
    res.add(matcher.group(0)); 
} 
System.out.println(res);

Salida:

[a, b, a(2), b, b(52), g, c(4), d(2), f, e(14), f(6), g(8)]

Vea la demostración de Java y una demostración de expresiones regulares .

detalles del patrón

  • [a-g]- una carta de aag
  • (?:\(\d+\))? - un grupo coincidente opcional no captura de 1 o 0 ocurrencias de
    • \(- un (carbón de leña
    • \d+ - 1+ dígitos
    • \)- un )carbón de leña.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191705&siteId=1
Recomendado
Clasificación