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

RegEx: das X-te vorkommen eines Zeichens im String

Tags: Ähnliche Threads

Leser: 3


<< >> 6 Einträge, 1 Seite
roli
 2008-03-07 14:54
#106798 #106798
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi,

ich verzweifele gerade darüber wie ich das X-te vorkommen eines Zeichens in einem String "zu packen" bekomme.
Code (perl): (dl )
1
2
3
4
$var1="123x456x789xabc";
$var2="";

($var2 = $var1) =~ s/(.*x){2}[^x]*?(x.*)/$1PROBE$2/;

Ich möchte in var1 gerne die 789 durch PROBE ersetzen, aber so wie ich's hier habe wird's nix.
So kommt da 456xPROBExabc bei raus, leider fehlt das 123x am Anfang. Ausserdem geht's so auch nicht, das ich abc durch PROBE ersetze.

Dankbar für alle sachdienlichen Hinweise
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
roli
 2008-03-07 15:01
#106800 #106800
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi,

mit
Code (perl): (dl )
1
2
3
4
$var1="123x456x789xabc";
$var2="";

($var2 = $var1) =~ s/((.*x){2})[^x]*?(x.*)/$1PROBE$2/;

kommt zumindest schon mal 123x456xPROBExabc raus, bleibt "nur noch" wenn ich abc ersetzen möchte.
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
renee
 2008-03-07 15:24
#106801 #106801
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

my $var1 = "123x456x789xabc";
my $var2 = "";
my $vorkommen = 0;

($var2 = $var1) =~ s/^((?:.*?x){$vorkommen})[^x]*?(x.*)$/${1}PROBE$2/;

print $var2;
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/
roli
 2008-03-07 15:33
#106803 #106803
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi,
ich habe gerade folgende Lösung gefunden:
Code (perl): (dl )
1
2
3
4
$var1="123x456x789xabc";
$var2="";

($var2 = $var1) =~ s/((.*?x){3})[^x]*(x+.*)*/$1PROBE$2/;


@Renee: Danke
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
renee
 2008-03-07 15:41
#106804 #106804
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dein Code gibt aber was falsches aus:

Code: (dl )
123x456x789xPROBE789x
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/
roli
 2008-03-07 15:51
#106805 #106805
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Ok,
Code (perl): (dl )
($var2 = $var1) =~ s/((.*?x){3})[^x]*(x+.*)*/$1PROBE$3/;

ich hatte hier noch $2 anstelle $3 gepostet
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
<< >> 6 Einträge, 1 Seite



View all threads created 2008-03-07 14:54.