Regex Problemchen

H

Hasswuff

Gast
Huhu Ihr lieben,

Ich habe folgenden String in Javascript:

<ANSWER>
<BOX>
Inhalt der Box
</BOX>
</ANSWER>

nun möchte ich gern mit str.match() den Inhalt zwischen <ANSWER> und </ANSWER> erhalten (case sensitiv natürlich).
Mein Ansatz ist folgender:

Answer = response.match(/<ANSWER>(.*)<\/ANSWER>/i);
alert (Answer[1]);

Ich habe ein Buch vor der Nase liegen, dass mit zahlreichen Beispielen den Eindruck erweckt, als sei man Ansatz richtig, leider sagt mir JavaScript etwas anderes?!? Könnt ihr mir helfen? Danke..
 

Wladimir

Mitglied
Ich denke, .match() ist die falsche Methode für groups. Das liefer nur gefunden oder nicht.

Folgendes funktioniert
Java:
var xml = "<ANSWER><BOX>Inhalt der Box</BOX></ANSWER>";
var expr= /<ANSWER>(.*)<\/ANSWER>/i;
expr.exec(xml);
alert(RegExp.$1);
 
Zuletzt bearbeitet:
H

Hassowuff

Gast
Tatsächlich.. Das kannte ich noch garnicht! Muss nun nur noch mein ganzes Script damit umarbeiten *grins* - Funktioniert wunderbar - Vielen lieben Dank!
 
H

Hassowuff

Gast
Hmm.. Hab mich wohl zu früh gefreut..

So Funktionierts wunderbar:

Java:
var response = "<answer><box id="1"><p>Inhalt der Box </p></box></answer>";
var expr = /<ANSWER>(.*)<\/ANSWER>/i;
expr.exec(response);
var answer = RegExp.$1;
alert(answer);

So leider nicht:

Java:
var response = $.ajax({
	type: "GET",
	processData: false,
	async: false,
	data: datastring
}).responseText;
alert (response); // Hier stimmt alles! *1

var expr = /<ANSWER>(.*)<\/ANSWER>/i;
expr.exec(response);
var answer = RegExp.$1;
alert(answer);

*1) An dieser Stelle wird der Code ausgegeben, die Rückgabe ist also definitiv vorhanden! Ich denke mal, dass es ein Problem gibt, weil der Code nicht einzeilig, sondern Mehrzeilig ist. Leider habe ich das mit "Multiline" in meinem Buch nicht richtig verstanden.. Muss ich jetzt die Leerzeichen und Zeilenumbrüche in meinem Regex-Muster beachten, wenn ja wie? (/im statt /i am Ende hilf leider nicht!)
 
H

Hassowuff

Gast
@OFF-TOPIC: Huch!!! Das hab ich bis eben nicht mal bemerkt^^ Das ist natürlich nicht meine Absicht gewesen. Vielleicht hat ja dennoch jemand eine Lösung --wer weiß-- Grüßle Hassowuff
 

Wladimir

Mitglied
Wieso verwendet du nicht
response.toLowerCase().indexOf("<answer>")
um den Anfang und das Ende zu finden und dann mit substring den Teil zu extrahieren.
Das wäre auch performanter.
 

Ähnliche Java Themen

Neue Themen


Oben