tengo esta cadena:cómo leer la parte de cadena en Java
<meis xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uri="localhost/naro-nei" onded="flpSW531213" identi="lemenia" id="75" lastStop="bendi" xsi:noNamespaceSchemaLocation="http://localhost/xsd/postat.xsd xsd/postat.xsd">
¿Cómo puedo obtener lastStop
valor de la propiedad en JAVA?
Esta expresión regular trabajó cuando se prueba en http://www.myregexp.com/
Pero cuando lo intento en Java no veo el texto coincidente, aquí es cómo me trató:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class SimpleRegexTest {
public static void main(String[] args) {
String sampleText = "<meis xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uri=\"localhost/naro-nei\" onded=\"flpSW531213\" identi=\"lemenia\" id=\"75\" lastStop=\"bendi\" xsi:noNamespaceSchemaLocation=\"http://localhost/xsd/postat.xsd xsd/postat.xsd\">";
String sampleRegex = "(?<=lastStop=[\"']?)[^\"']*";
Pattern p = Pattern.compile(sampleRegex);
Matcher m = p.matcher(sampleText);
if (m.find()) {
String matchedText = m.group();
System.out.println("matched [" + matchedText + "]");
} else {
System.out.println("didn’t match");
}
}
}
Tal vez el problema es que yo Use escape char en mi prueba, pero la cuerda real no tiene escape dentro. ?
ACTUALIZACIÓN
¿Alguien sabe por qué esto no funciona cuando se utiliza en java? o cómo hacer que funcione?
El problema es el segundo '?' (El que está después del grupo de caracteres). Dado que la entrada parece ser XML, las comillas no son opcionales de todos modos, por lo que su eliminación no es un problema y hace que la expresión regular funcione. –
@Joachim Sauer La entrada no es xml es una parte de un archivo xml que se grabó en String. –
eso es suficiente. El hecho de que fuera parte de un archivo XML (y supongo que estaba bien formado) significa que los atributos ** deben ** ser citados. –