Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8882[/thread]

RegEx-Frage



<< >> 9 Einträge, 1 Seite
pktm
 2007-03-28 01:40
#75459 #75459
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Kann ich innerhalb einer RegEx prüfen, wie oft ein bestimmter Teil schon gematcht wurde und dieses Ergebnis in einer Bedingung verwenden?

Wenn ich so eine Zeichenkette habe wie: [['S',['VMFIN',['NP',['PPER']],['VP',[['AVP',['ADV']],['AVP',['ADV']],['NP',['NN']],'VVINF']]]]], kann ich dann eine Bedingung formulieren wie, "suche nur da, wo die [ öfter vorkam als die ]?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-03-28 09:55
#75460 #75460
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie meinst Du das:
Quote
"suche nur da, wo die [ öfter vorkam als die ]?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2007-03-28 20:25
#75461 #75461
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Im Prinzip ist das ein anderer Versuch die RegEx aus dem anderen Thread nachzubauen:
http://board.perl-community.de/cgi-bin....3;#idx2

Ich durchsuche da Syntaxbäume auf Dominanzrelationen. So dominiert VMFIN in obiger Struktur NP unmittelbar.
Wenn ich jetzt wissen möchte, ob VMFIN unmittelbar VP dominiert muss ich prüfen, ob direkt danach oder mit einer beliebigen Anzahl von Strukturen (z.B. [XP, [Z]], beliebig verschachtelt oder nur 'Z') dazwischen VP vorkommt. Und da dachte ich mir, hey, prüf doch einfach auf die Anzahl geöffneter Klammern und gelschlossener Klammern. Wenn mehr Klammern geöffnet wurden als geschlossen wurden, dann dominiert VMFIN eine VP.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
GoodFella
 2007-03-29 03:21
#75462 #75462
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Wenn es dir nur darum geht, die Anzahl geöffneter und geschlossener Klammern herauszufinden, nimm folgendes:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;

my $data = '[[\'S\',[\'VMFIN\',[\'NP\',[\'PPER\']],[\'VP\',[[\'AVP\',[\'ADV\']],[\'AVP\',[\'ADV\']],[\'NP\',[\'NN\']],\'VVINF\']]]]]';
my $nr_open_brackets = $data =~ tr/\[/\[/;
my $nr_close_brackets = $data =~ tr/\]/\]/;
print "open: $nr_open_brackets, close: $nr_close_brackets";


ergibt:

Quote
---------- Perl ----------
open: 13, close: 13
Output completed (0 sec consumed) - Normal Termination


..aber ich muss gestehen, ich habe dich nicht so richtig verstanden :/

..und wenn du schon die Regex aus dem anderen Thread hast, warum benutzt du diese dann nicht?
pktm
 2007-03-29 11:06
#75463 #75463
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nun, das Problem ist herauszufinden, wieviele Klammern es an einer bestimmten Position sind, z.B. bei 'VP'.
http://www.intergastro-service.de (mein erstes CMS :) )
GoodFella
 2007-03-29 17:48
#75464 #75464
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
..Dann teil denn String so, dass du nur noch zählen brauchst (wenn das geht).

Achja, was heisst "bei" VP? Vorher? Nachher? Beides? In bis wie weit vorher / nachher erstreckt sich der relevante Part?\n\n

<!--EDIT|GoodFella|1175176283-->
pktm
 2007-04-18 00:39
#75465 #75465
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Vor der VP.
http://www.intergastro-service.de (mein erstes CMS :) )
PerlProfi
 2007-04-18 16:41
#75466 #75466
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Wieso zerlegst du den String nicht ?
Code: (dl )
1
2
$pos = 'VP';
my($before, $find, $after) = $data =~ /^(.*?)($pos)(.*?)$/;


Dann kannst du einfach die öffnenden und schließenden Klammern aus dem gebrauchten Teil rausholen.
Oder können die Zeichen zwischen den '' auch [ oder ] sein, ohne escaped zu werden ?\n\n

<!--EDIT|PerlProfi|1176900140-->
pktm
 2007-04-18 20:32
#75467 #75467
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja, das wäre eine Idee. Danke!
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 9 Einträge, 1 Seite



View all threads created 2007-03-28 01:40.