Ich habe folgenden Text:Regex für Text zwischen Tags zu extrahieren, aber nicht die Tags
<Data>
<xpath>/Temporary/EIC/SpouseSSNDisqualification</xpath>
<Gist>AllConditionsTrue</Gist>
<Template>
<Text id="1">Your spouse is required to have a Social Security number instead of an ITIN to claim this credit. This is based on the IRS rules for claiming the Earned Income Credit.</Text>
</Template>
</Data>
<Data>
<xpath>/Temporary/EIC/SpouseSSNDisqualification</xpath>
<Gist>AllConditionsTrue</Gist>
<Template>
<Text id="1">Your spouse has the required Social Security number instead of an ITIN to claim this credit. This is based on the IRS rules for claiming the Earned Income Credit.</Text>
</Template>
</Data>
Ich mag würde die Daten zwischen den xpath
Tags extrahieren, aber nicht den Tags selbst.
Ausgang sollte sein:
/Temporary/EIC/SpouseSSNDisqualification
/Temporary/EIC/SpouseSSNDisqualification
Diese Regex scheint mir zu geben, den gesamten Text einschließlich der xpath
Tags, die ich nicht will:
<NodeID>(.+?)<\/NodeID>
Edit:
Hier ist mein Java-Code, aber ich bin nicht sicher, ob dieser Wert auf meine Frage hinzufügen würde:
try {
String xml = FileUtils.readFileToString(file);
Pattern p = Pattern.compile("<xpath>(.+?)<\\/xpath>");
Matcher m = p.matcher(xml);
while(m.find()) {
System.out.println(m.group(0));
}
}
Die Frage wird viel besser sein, wenn Sie auch den Java-Code, den Sie versuchten –
[XML nicht mit Regex zu parsen] (http://Stackoverflow.com/a/1732454/2482744) (die Antwort sagt HTML aber es ist das gleiche Problem) –
Sie haben mit der Capture-Gruppe '(xxx)' aufgenommen, was Sie wollen, benutzen Sie es einfach, indem Sie 'group (1)' aufrufen. 'group (0)' gibt das gesamte Übereinstimmungsmuster zurück, nicht nur den erfassten Teil. --- Obwohl ich mit @AlexHall einverstanden bin: ** Verwenden Sie keine Regex, um Text aus XML zu extrahieren. ** Verwenden Sie einen XML-Parser. – Andreas