Schrift
[thread]6006[/thread]

Mehrmaliges Matchen in einem Suchstring vermeiden

Leser: 1


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
jkrais
 2004-01-09 10:45
#78872 #78872
User since
2003-12-10
5 Artikel
BenutzerIn
[default_avatar]
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-->
Crian
 2004-01-09 10:46
#78873 #78873
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
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
Crian
 2004-01-09 10:49
#78874 #78874
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
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
jkrais
 2004-01-09 10:49
#78875 #78875
User since
2003-12-10
5 Artikel
BenutzerIn
[default_avatar]
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.
Crian
 2004-01-09 10:51
#78876 #78876
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
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
format_c
 2004-01-09 10:52
#78877 #78877
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
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
Crian
 2004-01-09 10:54
#78878 #78878
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
#!/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

Code: (dl )
EZahl kommt 2 mal vor.


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
Crian
 2004-01-09 10:56
#78879 #78879
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
@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
jkrais
 2004-01-09 10:56
#78880 #78880
User since
2003-12-10
5 Artikel
BenutzerIn
[default_avatar]
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.
havi
 2004-01-09 10:58
#78881 #78881
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/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
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2004-01-09 10:45.