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



#!/COMMUNITY

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




11.02.2012 / 23: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


BeitragRegEx gesucht
Seitenanfang
Hallo,

ich suche eine Regexp, die folgende beiden Ausdrücke erkennt (irgendwas steht für \w*):
l-irgendwas local
p-irgendwas parameter

Also wenn ein "l-" vorne steht, ist hinten ein "local" Pflicht, bei "p-" "parameter". "l-irgendwas parameter" soll also nicht erkannt werden.

Zusätzlich soll danach der Teil "l-irgendwas" bzw. "p-irgendwas" in einem Subpattern gespeichert sein (ganz wichtig!).

Ich bin daran inzwischen verzweifelt und hoffe auf Eure Hilfe!

Datum: 03.09.2005-16:09

Beitragre: RegEx gesucht
Seitenanfang
Hi,

mal seh'n.


/([lp]-.*)\s(local|parameter)/

Jetzt wird, wenn ich nicht irre, p|l-irgendwas in $1 gespeichert.

Das war aber nicht was wir wollten, denn bei l- ist local Pflicht.

OK, ich denke da wirst zwei PatternMatchings aufeinander machen müssen.


my $l = undef;
my $p = undef;
$var =~ /(l-.*)\slocal/;
$l = $1;
$var =~ /(p-.*)\sparameter/;
$p = $1;

-uw

Datum: 04.09.2005-00:54

Beitragre: RegEx gesucht
Seitenanfang
Danke für die Antwort.

Deine Variante habe ich momentan implementiert und muss halt die gleiche Regex inzwischen 7 mal für die unterschiedlichen Fälle aufrufen.

Und da der Rest des Ausdrucks recht aufwändig in der Auswertung ist (ist knapp 400 Zeichen lang), wollte ich die Performance optimieren, indem ich alles in einen Ausdruck packe. Dadurch müsste halt der Rest der Erkennung nur einmal und nicht 7 mal durchgeführt werden.

Datum: 04.09.2005-01:27

Beitragre: RegEx gesucht
Seitenanfang
Dann versuch's mit Clustering, das muesste eigentlich funktionieren:

$var =~ /(?:(l-.*)\slocal|(p-.*)\sparameter)/;

Der Match muesste dann jeweils in $1 stehen.

Siehe auch: perldoc perlre
http://perldoc.perl.org/perlre.html#Extended-Patterns

Datum: 04.09.2005-10:11

Beitragre: RegEx gesucht
Seitenanfang
Da werden leider zwei Subpattern angelegt. Also der Inhalt von (p-.*) landet in $2.

Datum: 04.09.2005-10:27

Beitragre: RegEx gesucht
Seitenanfang
$var =~ /((?:l-.*)\slocal|(?:p-.*)\sparameter)/;

Datum: 05.09.2005-09:31

Beitragre: RegEx gesucht
Seitenanfang
Da steckt dann leider der ganze Rest mit in dem Subpattern. Ich brauche aber nur das erste Wort (l- bzw p-irgendwas).
Ich habe das jetzt gelöst, wie Cremator vorgeschlagen hat (gleich mit Ersetzung):
$var =~ s/((l-.*)\slocal|(p-.*)\sparameter)/&buildRes()/e
Die Funktion &buildRes wertet halt aus, welcher Pattern gefüllt ist und gibt ein entsprechendes Ergebnis zurück.
Nicht schön, funktioniert aber.

Datum: 05.09.2005-22:05

Beitragre: RegEx gesucht
Seitenanfang
Hi Cremator,

und da ist der Link, der mir dazu noch gefehlt hat. Super, danke.

Sag mal, hättest Du nicht Lust an der Entwicklung eines Content Management Systems mitzuwirken?

http://www.perlunity.de/cgi-bin/forum/forum_thread.cgi?tid=18697&mid=36209&fid=6&pn=0

-uw

Datum: 05.09.2005-13:15

-






-
-