2013-07-08 18 views
22

Wenn ich das folgende Muster in einem Text:Extrakt String mit regex in groovy

def articleContent = "<![CDATA[ Hellow World ]]>" 

Ich möchte die „Hellow World“ Teil extrahieren, so dass ich den folgenden Code, um es entsprechen:

Allerdings bekomme ich immer eine Nullzeigerausnahme, weil die Regex nicht zu funktionieren scheint, was wäre die richtige Regex für "irgendeinen Textfrieden" und wie man sie aus einer Zeichenkette sammelt?

Antwort

30

Versuchen:

def result = (articleContent =~ /<!\[CDATA\[(.+)]]>/)[ 0 ]​[ 1 ] 

Allerdings mache ich mir Sorgen, dass Sie xml mit regulären Ausdrücken zu analysieren planen. Wenn dieses cdata Teil eines größeren gültigen XML-Dokuments ist, besser ein XML-Parser verwenden

+0

THanks, die perfekt funktionierte: D – RicardoE

+1

Es ist nicht für gültige xml ... das ist das Problem. Vielen Dank! – RicardoE

+2

Ich bin neu in Groovy. Kannst du bitte erklären, warum wir den Matcher mit "[0]" dereferenzieren müssen, um eine Liste von Gruppen zu erhalten? – Gili