User since
2003-12-10
5
Artikel
BenutzerIn
Hallo folgendes Problem:
die Eingabe soll untersucht werden auf E[beliebige Zahl], z.B. E12 oder e12. Soweit funktioniert es auch, doch wie kann ich das mehrmalige Vorkommen im String mit Hilfe des Matchings erkennen (z.B. e1e1e1)?
Code:
do{
$temp = <STDIN>;
}while($temp !~ /\be|E\d+\b/);\n\n
<!--EDIT|jkrais|1073638099-->
User since
2003-08-04
5872
Artikel
ModeratorIn
Was willst Du denn mit dem mehrmaligen Vorkommen machen?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
5872
Artikel
ModeratorIn
Direkt hintereinander vorkommende EZahl-Kombinationen könntest Du mit
(:E\d+)+ fangen.
Wenn Du jedes Vorkommen irgendwie bearbeiten willst, müsstest Du den String in einer While-Schleife bearbeiten und ggf. mit dem continue-Flag arbeiten.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-12-10
5
Artikel
BenutzerIn
Hallo,
es sollte dadurch vermieden werden, dass z.b. nur e1 aber nicht e1e1 akzeptiert werden soll. Bei e1e1 soll eine erneute Eingabe des Users erfolgen.
User since
2003-08-04
5872
Artikel
ModeratorIn
Achso, Du möchtest also 'E12' zulassen, nicht aber 'e3 und e65' ?!
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
1706
Artikel
HausmeisterIn
print "Kommt mindestens zwei mal vor" if $string =~ /\b(e\d+)\1\b/i;
Wenn das nicht das ist was du willst beschreib bitte dein Problem näher.
Gruß Alex
User since
2003-08-04
5872
Artikel
ModeratorIn
#!/usr/bin/perl
use strict;
my $var = "e7 und E876 nimm dies!";
my @treffer = $var =~ m~(e\d+)~gi;
print "EZahl kommt ", scalar @treffer, " mal vor.";
Ausgabe
HTH\n\n
<!--EDIT|Crian|1073638933-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
5872
Artikel
ModeratorIn
@format_c bei Deiner Lösung müssen die EZahlen ja direkt hintereinander stehen... mal sehen, was er eigentlich will...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-12-10
5
Artikel
BenutzerIn
Ich beschreibe besser mein Problem mal näher.
Die Zahl hinter dem e kann beliebig sein, genauso kann das e auch als E eingegeben werden. Jedoch darf nur einmal (Beispielzahl = 123) E123 oder e123 eingegeben werden. Eine Eingabe von e123e123 ist durch das Matching zu verhindern und der User soll erneut den Wert eingeben.
User since
2003-08-04
2036
Artikel
BenutzerIn
#!/usr/bin/perl
use warnings;
use strict;
my $string = "Das ist ein Test wo e12 zweimal vorkommt, naemlich genau jetzt: e12...";
my ($anz) = $string =~ s%\b(e12)\b%e12%g;
print $anz; # 2
Ich hoffe das meintest du...
Gruss