Zählen mit Regular Expressions

Moin,

kann ich eigentlich mit regular expressions zählen?
Also sowas wie "String enthält mindestens n [:alpha:] und mindestens m [:digit:], nicht zwangsläufig aufeinanderfolgend?

Danke,
-Efchen

Moin,

kann ich eigentlich mit regular expressions zählen?
Also sowas wie "String enthält mindestens n [:alpha:] und
mindestens m [:digit:], nicht zwangsläufig aufeinanderfolgend?

Da du in C/C++ postest, nehme ich an, Du arbeitest
mit PCRE 7.x oder sowas.

Ja, damit geht es, da Du „pcrecallout“ (Funktionsaufruf)
machen kannst: http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=p…

Grüße

CMБ

Moin,

kann ich eigentlich mit regular expressions zählen?
Also sowas wie "String enthält mindestens n [:alpha:] und
mindestens m [:digit:], nicht zwangsläufig aufeinanderfolgend?

Da du in C/C++ postest, nehme ich an, Du arbeitest
mit PCRE 7.x oder sowas.

Hmm…nein, ich kannte PCRE bisher nicht.
Ich arbeite unter Unix, manchmal Shellscripts, manchmal Perl-Scripts, größtenteils C-Programme.

Ja, damit geht es, da Du „pcrecallout“ (Funktionsaufruf)
machen kannst:
http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=p…

Das muss ich mir morgen mal in Ruhe ansehen. Danke einstweilen,
-Efchen

Hallo,

Da du in C/C++ postest, nehme ich an, Du arbeitest
mit PCRE 7.x oder sowas.

Hmm…nein, ich kannte PCRE bisher nicht.
Ich arbeite unter Unix, manchmal Shellscripts, manchmal
Perl-Scripts, größtenteils C-Programme.

Ach so! Mir perl 5 geht das mit sog. „code assertions“
(?{ … }) recht gut:

 ...
 my ($nWorte, $nZahlen);
 my $input = 'a 3 12 dd 4 555 abc';

 () = $input =~ / [[:alpha:]]+ (?{ $nWorte++ }) /xg;
 () = $input =~ / [[:digit:]]+ (?{ $nZahlen++ }) /xg;

 print "$nWorte, $nZahlen\n" 
 ...

==> 3,4

(die „() =“ am Anfang erzeugen nur einen Listenkontext,
der dazu führt, dass alle vorkommenden Muster gesucht
werden)

Grüße

CMБ

Ach so! Mir perl 5 geht das mit sog. „code assertions“
(?{ … }) recht gut:

Geht das jetzt auch mit C?