Regex para extraer lang y country del nombre del paquete

Yo uso Java 7.

Me gustaría extraer el idioma y el país de una Cadena que representa un nombre de archivo de paquete o un nombre de archivo de propiedades. El nombre del archivo no contiene la extensión.

Por ejemplo

  • paquete -> Cadena vacía o nula
  • bundle_en -> es
  • bundle_en_US -> en_US
  • complicado_paquete_nombre_es_ES -> es_ES

Intenté esto pero no me da el resultado esperado.

private static void testPattern(String bundleName) {
        final Pattern pattern = Pattern.compile(".+(_[a-z]{2,3}(_[A-Z]{2,3}){0,1}){0,1}");
        final Matcher matcher = pattern.matcher(bundleName);
        if (matcher.matches()) {
            for (int i = 0; i < matcher.groupCount(); ++i) {
                System.out.println("Group " + i  + " = " + matcher.group(i));
            }
        } else {
            System.out.println("Nothing");
        }
    }

Para "bundle_en_US" su espectáculo:

Grupo 0 = bundle_fr_US Grupo 1 = nulo

¿Me pueden ayudar a corregir mi expresión regular o puede que esta expresión regular ya exista en el núcleo de Java?

Gracias.

Respuesta 1

Estoy confundido por una de las preguntas en mi examen de práctica. En Java, la clase Integer extiende la clase abstracta base Número. Ahora, supongamos que tenemos un método con una firma de la siguiente manera: ...

Tengo el siguiente código: intente {jArray = new JSONArray (resultado); JSONObject json_data = nulo; Cadena myString = nulo; para (int i = 0; i <jArray ....

Estoy tratando de crear un objeto de la clase Robot. Sin embargo, obtengo 'java.lang.NullPointerException' cuando intento hacer lo mismo. Robot estático robot = nulo; pruebe {robot = nuevo robot (); ...

Estoy intentando instalar un paquete de servicio de controlador NAR personalizado en mi instalación de NiFi pero aparece este error durante el inicio. Actúa como si no pudiera encontrar la clase RecordReaderFactory del nifi -...