Schrift
[thread]13062[/thread]

regex: quote + -- \+ funktioniert nicht

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2009-01-28 00:49
#118405 #118405
Hi, ich will ein normales Plus in einen Regex packen. Klar + ist reserviert also will ich das ganze Ding quoten. Habe dazu einfach \+ gemacht, allerdings spuckt er das aus:
Code: (dl )
Quantifier follows nothing in regex; marked by &lt;-- HERE in m/+ &lt;-- HERE l/


Sicher nur ein kleines Problem. Danke euch
renee
 2009-01-28 08:50
#118406 #118406
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig mal Deinen kompletten Ausdruck. Weil das mit \+ funktioniert:

Code: (dl )
1
2
3
C:\>perl -e "print '+++' =~ /\+/"
1
C:\>


Die Fehlermeldung sieht so aus, als hättest Du noch ein weiteres "nacktes" +
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/
Gast Gast
 2009-01-28 14:19
#118412 #118412
hi, sieht so aus:
Code (perl): (dl )
1
2
3
4
    #add
    if ($permissions =~ /\+ ([a-z])/xms ) {
        $new_permissions = qq{$old_permissions$permissions};
    }
Linuxer
 2009-01-28 14:23
#118413 #118413
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Funktionert doch:
Code: (dl )
1
2
$ perl -wle ' if ( "+w" =~ m/\+ ([a-z])/xms ) { print "yo"; } else { print "no"; }'
yo
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!
Gast Gast
 2009-01-28 14:38
#118414 #118414
komisch, bei mir will das nicht.
Liegts vllt an use strict?
renee
 2009-01-28 14:57
#118415 #118415
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nö, strict meckert da nicht:

Code: (dl )
1
2
C:\>perl -Mstrict -wle " if ( '+w' =~ m/\+ ([a-z])/xms ) { print 'yo'; } else { print 'no'; }"
yo
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/
Linuxer
 2009-01-28 14:57
#118416 #118416
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Bir mir jedenfalls nicht:
Code: (dl )
1
2
$ perl -Mstrict  -wle ' if ( "+w" =~ m/\+ ([a-z])/xms ) { print "yo"; } else { print "no"; }'
yo


Ist das wirklich der Code aus Deinem Programm? 1:1 abgeschrieben?

Hast Du den Regex vielleicht vorher in eenem String definiert und dann eingesetzt?

Code: (dl )
1
2
~$ perl -Mstrict  -wle 'my $re = "\+ ([a-z])"; if ( "+w" =~ m/$re/xms ) { print "yo"; } else { print "no"; }'
Quantifier follows nothing in regex; marked by <-- HERE in m/+ <-- HERE ([a-z])/ at -e line 1.
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!
LanX-
 2009-01-28 14:59
#118417 #118417
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Bezieht sich die Fehlermeldung wirklich auf diese Zeile?
Gast Gast
 2009-01-28 16:12
#118423 #118423
Ohje, war wohl doch etwas spät gestern, bin in der Zeile verrutscht.
Die Ursache liegt in einem String der im Regex eingesetzt wird und eben dieses + enthält.
Wie kann ich dort das Plus quoten? Der String wird vom Browser gesendet.
renee
 2009-01-28 16:18
#118426 #118426
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
\Q..\E

Code (perl): (dl )
1
2
3
4
my $string = "+[a-z]";
if( '+w' =~ /\Q$string\E/ ){
  print "yes";
}
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/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2009-01-28 00:49.