Quiero encontrar solo una palabra en esto a través de Java Regex

Tengo cadenas de 1K como las siguientes que se guardan en una matriz de cadenas y solo necesito las palabras en negrita, que no son una constante)'. Así que me pregunto cuál podría ser la mejor manera.

(descSummary: EME Commercial (Solicitud de cambio), archivado: falso, nombre: EME Commercial (Solicitud de cambio), uniqueName: EME Commercial (Change Request)(JTS-Sentinel-Id)) (isInitialized: true, internalPublic: true, internalVisibleToMembers: false, internalVisibleToAccessList: false, owningApplicationKey: JTS-Sentinel-Id, internalIsProcessProvider: false)

Por favor, ayuda!

preguntado el 22 de mayo de 12 a las 21:05

¿Cuál es tu pregunta? ¿Por qué necesitas una expresión regular para esto? -

Hola Tim, tengo cadenas de 1K como esta que se guardan en una matriz de cadenas y solo necesito 'nombre: (después de la cadena, que no es una constante)'. Así que me pregunto cuál podría ser la mejor manera. -

El formato deficiente y el desbordamiento de la pila están repletos de preguntas similares, por lo que se votó negativamente. En cuanto a su problema, aquí están los documentos: docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html -

¡UPS! lo siento He intentado editar muchas veces. Pero no pude evitarlo. =( -

1 Respuestas

Bueno, parece que está solicitando el texto después de la cadena "nombre:" y antes de la siguiente coma, por lo que su expresión regular es /name: ([^,]+)/

Actualizar:

No entiendo porque estas usando .replaceAll().

No necesita las barras para delimitar la expresión regular cuando está en un literal de cadena de Java. Mucha gente, como yo, usa las barras para resaltarlo en un texto normal.

Si desea mostrar el segmento que ha marcado en negrita, entonces desea algo como esto:

Pattern pattern = Pattern.compile("name: ([^,]+)");
Matcher matcher = pattern.matcher(str.toString());
if (matcher.matches()) {
    System.out.println(matcher.group(0));
    System.out.println(matcher.group(1));
}

.group(0) devuelve la cadena completa que coincide con el patrón. .group(1) devuelve la cadena que coincide con el primer grupo "capturado" entre paréntesis, el ([^,]+) parte.

Y porque estas llamando .toString() on str? El nombre de esa variable sugiere que ya es una Cadena.

contestado el 22 de mayo de 12 a las 23:05

Hola David, creo que hay algo mal con eso. ¿Puedes comprobarlo una vez más, por favor? - Harish Raj

Sí, definitivamente estuvo mal. he editado Puede hacer clic en el enlace "justo ahora" para ver el cambio. - David Gorsline

Reemplazo de patrón = Pattern.compile("/nombre: ([^,]+)/"); Matcher matcher = replace.matcher(str.toString()); System.out.println(matcher.replaceAll("\t")); ¿Crees que el código es correcto? Utilizo para obtener toda la cadena. - Harish Raj

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.