AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Javascript-Regexp will nicht so wie ich
Thema durchsuchen
Ansicht
Themen-Optionen

Javascript-Regexp will nicht so wie ich

Ein Thema von alcaeus · begonnen am 18. Apr 2006 · letzter Beitrag vom 18. Apr 2006
Antwort Antwort
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

Javascript-Regexp will nicht so wie ich

  Alt 18. Apr 2006, 10:44
Hallo ihr,

ja, RegExps und Scriptsprachen habens mir angetan, aber langsam verliere ich die Geduld. Ich bekomme einen Text in einer Javascript-Variable, der auch Zeilenumbrueche enthalten kann. Es ist ein XML-File mit dem der DOM-Parser nicht ganz zurecht kommt.
Nun will ich es so parsen:
Code:
var res = response.match(/\<(.+)\>(.+)\<\/(.+)\>/gm);
Da muesste er folgende Tags finden: result, postid, editmessage, message und rawmessage. Die letzten beiden werden aber nicht erkannt; wahrscheinlich weil sie auch Zeilenumbrueche (\n) enthalten. Also habe ich es so probiert:
Code:
var res = response.match(/\<(.+)\>([.\s]+)\<\/(.+)\>/gm);
Da hat er mir dann nur noch die Tas gefunden, welche ein Leerzeichen enthalten haben; die ohne Leerzeichen hat er geschickt ignoriert

Kann mir jemand vielleicht einen (kleinen) Schubs in die richtige Richtung geben? Langsam verzweifle ich noch mit diesem JS-Zeugs da

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Javascript-Regexp will nicht so wie ich

  Alt 18. Apr 2006, 11:25
Hehe, das ist ziemlich fies .
Der Punkt wird in character classes nicht als Metacharakter erkannt, sondern als das, was er ist: ein Punkt.
Neben Tags mit Leerzeichen müssten also mit deinem letzten Regex auch Tags wie <a>.</a> gefunden werden.
Zitat von http://www.regular-expressions.info/dot.html#nodotall:
JavaScript and VBScript do not have an option to make the dot match line break characters. In those languages, you can use a character class such as [\s\S] to match any character.
Wahrscheinlich musst du dann noch auf ungreedy umstellen, sonst wird nur ein riesiges Tag gefunden.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Javascript-Regexp will nicht so wie ich

  Alt 18. Apr 2006, 15:13
Hallo,

das war der entscheidende Tipp, jetzt funktionierts:
Code:
var res = response.match(/\<response\>((.|\s)+?)\<\/response\>/gm);
Danke

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz