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

regex max ein "-"



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2007-07-01 15:37
#78102 #78102
hi,
ich möchte eine if schleife ausführen wenn max 1 und min 1 "-" in einen string vorkommt... ich komm aber nicht auf den regex...

pls help
MisterL
 2007-07-01 15:44
#78103 #78103
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Müsste so aussehen:
Code: (dl )
/-{1,1}/ 

Aber max.1 und min 1 ist doch nur einmal......

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
RPerl
 2007-07-01 15:47
#78104 #78104
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
if(my $string =~ /-/) {
#hier dann dein code
}


Du koenntest mal das probieren...
MisterL
 2007-07-01 16:02
#78105 #78105
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Stimmt :)
Aber rein gefühlsmässig scheint die Variante mit konkreten Suchparametern schneller zu sein als ohne. Zum Probieren:
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl
use strict;
use warnings;
my $string ="MisterL - ein ganz schlechter Perlprogrammier";
#if($string =~ /-{1,1}/) {
if($string =~ /-/) {
print("MisterL ist wirklich ein ganz schlechter Perlprogrammierer");
}
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2007-07-01 16:33
#78106 #78106
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nur mal als Anmerkung: statt {1,1} kann man auch einfach nur {1} schreiben.
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-07-01 16:50
#78107 #78107
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=RPerl,01.07.2007, 13:47]
Code (perl): (dl )
1
2
3
if(my $string =~ /-/) {
#hier dann dein code
}


Du koenntest mal das probieren...[/quote]
Aber das matcht doch auch mehrere Minusse.
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-07-01 16:55
#78108 #78108
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Auch das -{1,1} matcht auf mehrere "minusse". Probier mal
Code (perl): (dl )
print qq~yes\n~ if '--' =~ /-{1,1}/"
aus.

Wenn, dann müsste es so etwas wie /[^-]-[^-]/ sein...
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/
renee
 2007-07-01 16:56
#78109 #78109
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
oder mit negativ lookbehind und negativ lookahead...
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/
RPerl
 2007-07-01 17:18
#78110 #78110
User since
2006-11-26
384 Artikel
BenutzerIn

user image
[quote=pktm,01.07.2007, 14:50][quote=RPerl,01.07.2007, 13:47]
Code (perl): (dl )
1
2
3
if(my $string =~ /-/) {
#hier dann dein code
}


Du koenntest mal das probieren...[/quote]
Aber das matcht doch auch mehrere Minusse.[/quote]


Hm, ja das stimmt allerdings.
Aber da der Threadersteller kein dummy Beispiel gemacht hat. vielleicht hilft es ihm trotzdem.

Ansonsten hilft ihm das vielleicht noch:

Code: (dl )
/-(?!--)/

Gruß,

rPerl\n\n

<!--EDIT|RPerl|1183296123-->
PerlProfi
 2007-07-01 17:19
#78111 #78111
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Also die beste Regex die mir einfällt ist: /^[^-]*-[^-]*$/
Quasi renees 1. Vorschlag.

Aber sowas lässt sich doch auch mit index machen:
Code: (dl )
1
2
3
4
5
my $string = 'irgendetwas - nochwas';
my $pos = index($string, '-');
if ( $pos != -1 && index($string, '-', $pos) == -1 ) {
# genau 1 minus in $string
}


MfG
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-07-01 15:37.