perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 24
Click for quality!




11.02.2012 / 21:15

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragKomme nicht weiter mit Expression
Seitenanfang
Hallo,

ich habe folgendes Problem. Ich muss aus verschiedenen Dokumenten (nicht unbedingt xml oder html, es sind andere nicht xml-verwandte Dokumente) bestimmte Bereiche die sich wiederholen können parsen. Irgendwie komme ich mit meinen regulären Ausdruck nicht zu Potte.

Folgende Bereich sind in den Dokumenten vorhanden:

<TEXT:NAME LOOP>texttexteext</TEXT:NAME LOOP>

NAME steht anscheinend fuer ein Freiwort. Ich habe nun mal folgendes Probiert:

$tmp =~ s/<TEXT:.+?) LOOP>(.+)<\/TEXT:\1 LOOP>/($self->_getLoop($1, $2))/gse;

Mit diesem Ausdruck erhalte ich auch alle Blöcke, allerdings immer nur wenn diese als NAME ein anderes Wort haben. Das Problem nun: Es können mehrmals die gleichen Bereich vorkommen und genau da funktioniert mein Ausdruck nicht mehr. Mein Ausdruck parst dann vom ersten <TEXT:NAME LOOP> bis zum letzten </TEXT:NAME LOOP> wenn es mehrmals die gleichen Blöcke mit NAME gibt.

Kennt jemand eine Abhilfe? Ich komme einfach nicht mehr weiter; seit 8 Stunden bin ich am lesen und am probieren; aber ich sehe den Wald vor Bäumen wahrscheinlich nicht mehr?

Danke wenn mir jemand auf die Sprünge helfen könnte. Auch hoffe ich konnte mein Problem bestmöglich beschreiben?

perlbert

Datum: 24.05.2005-00:41

Beitragre: Komme nicht weiter mit Expression
Seitenanfang
Sorry,

muss natürlich lauten: (eine Klammer vergessen)

$tmp =~ s/<TEXT:(.+?) LOOP>(.+)<\/TEXT:\1 LOOP>/($self->_getLoop($1, $2))/gse;

Datum: 24.05.2005-00:42

Beitragre: Komme nicht weiter mit Expression
Seitenanfang
Hallo,

versuch es mal mit folgendem konstrukt:

$tmp =~ s/<TEXT:(.+?) LOOP>(.*?)<\/TEXT:\1 LOOP>/($self->_getLoop($1, $2))/gse;

grüße

Datum: 24.05.2005-22:26

Beitragre: Komme nicht weiter mit Expression
Seitenanfang
Hallo,

in Anlehnung an HTML-Extraktion geht möglicherweise das hier:

$tmp =~ s/<TEXT:(.+?) LOOP>([^>]+)<\/TEXT:\1 LOOP>/($self->_getLoop($1, $2))/gse;

Ciao
Ingo

Datum: 25.05.2005-07:57

-






-
-