# Regex Problemchen



## Hasswuff (13. Mrz 2010)

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 (13. Mrz 2010)

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

Folgendes funktioniert

```
var xml = "<ANSWER><BOX>Inhalt der Box</BOX></ANSWER>";
var expr= /<ANSWER>(.*)<\/ANSWER>/i;
expr.exec(xml);
alert(RegExp.$1);
```


----------



## Hassowuff (13. Mrz 2010)

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


----------



## Hassowuff (13. Mrz 2010)

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

So Funktionierts wunderbar:


```
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:


```
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!)


----------



## Illuvatar (13. Mrz 2010)

Auf jeden Fall ist das Javascript, nicht Java.
http://www.java-forum.org/top-fragen/5566-java-javascript.html

Verschoben


----------



## Hassowuff (13. Mrz 2010)

@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 (13. Mrz 2010)

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.


----------

