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



#!/COMMUNITY

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




11.02.2012 / 20:07

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


BeitragTeile aus Zeichenkette extrahieren
Seitenanfang
Hallo zusammen!

Ich habe folgendes Problem: Ich möchste aus einer Zeichenkette Teilstücke extrahieren, die sich untereinander unterscheiden, aber von gleichbleibenden Texten umschlossen sind. Hier mal ein Beispiel:

String="ks34d1jf_ka45sd_PRE#7#POST_kjga345sdf_la3gsf_PRE#5#POST_jhasgdf"
Meine Filter wären dann "_PRE#" und "#POST_". Als Ergebnis möchte ich dann eine Liste bekommen, die nur noch die Zwischenelemente enthält, also im Beispiel (7,5).

Wie kann ich dies am Besten erreichen. Hab es mit einem regulären Ausdruck versucht, allerdings scheint dieser nicht von vorne nach hinten zu arbeiten, soll heißen er erkennt immer nur das erste PRE und das letzte POST als Datenpaar :(
Hier was ich meine:
$string=~s/^(.)*($before)(.)*($behind)(.)*$/$3/gos;
liefert "5" als Ergebnis.

Hat jemand eine Idee?

Datum: 15.11.2009-19:21

Beitragre: Teile aus Zeichenkette extrahieren
Seitenanfang
Dein Regulärer Ausdruck ist zu "gierig". Nur das * versucht so viele Zeichen wie möglich zu bekommen. Um die minimale Anzahl zu bekommen, musst Du noch das Fragezeichen anhängen.

Zusätzlich brauchst Du den s///-Operator nicht. Du kannst mit ganz einfachen Matches arbeiten:

my @found = $string =~ /_PRE#(.*?)#POST_/g;
print join( ", ", @found );

Den g-Modifier brauchst Du, damit *alle* Vorkommen gefunden werden.

Datum: 16.11.2009-08:35

Beitragre: Teile aus Zeichenkette extrahieren
Seitenanfang
Dein Fehler liegt nicht im regulären Ausdruck, sondern in der Zuweisung.
Der Variable "$string" wird erst "7", dann "5" zugewiesen. Für eine ultrakurze Zeitspanne steht in $string also die "7", wird dann sofort aber von der "5" überschrieben.

Denk ich mal.

Datum: 23.11.2009-10:42

-






-
-