Thread regex Klammern
(6 answers)
Opened by perl at 2011-02-13 02:58
Hi,
hier ein Vorschlag, der die Untersuchung mit zwei Regex vornimmt. Dafür muss aber sichergestellt sein, dass der untersuchte String: a) wirklich nur maximal eine Befehlssequenz enthält b) keinen String enthält, der aussieht wie ein Befehlsargument aber keines ist Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #! /usr/bin/perl # vim:ts=4 sw=4 sts=4 et nu fdc=3: use strict; use warnings; my @str = ( "bla bla \\mycommand{arg1}{arg2}{arg3} foo foo", "Will I work? \\whatever", "this will be wrong: \\cmd{arg1} {bad_style_arg}", ); my $re_command = qr/\\(\w+)/; my $re_argument = qr/{([^}]+)}/; for my $str (@str) { # prerequisite: only one command sequenz in $str if ( ( my ($cmd) = $str =~ $re_command ) && ( my @args = $str =~ m/$re_argument/g ) >= 0 ) { print "$cmd with ", scalar(@args), " arguments: @args\n"; } } __END__ meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |