Thread Teilstring zurückgeben (9 answers)
Opened by maxritti at 2012-04-21 10:33

Linuxer
 2012-04-23 11:19
#157767 #157767
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

erweiter den Regex entsprechend Deiner Vorgabe:

Code (perl): (dl )
1
2
3
4
5
6
# not tested
my $str='P=HierStehtIrgendwas,I=NocheinText';
if( $str=~/P=(.+?),I=(.+?)$/ ) {
  print "P-VAL = $1\n";
  print "I-VAL = $2\n";
}


Aber wenn die Teilstrings für P und I in umgekehrter Reihenfolge auftauchen, gibt es keinen Match (I=bla,P=blubb).
Wenn zwischen den beiden andere Teilstrings auftauchen, gibt es auch keinen Match (P=bla,Q=ups,I=blubb).
<edit: siehe Antwort von Guifreund>


Warum muss das eigentlich unbedingt mit Regex erfolgen?
Mit split() könnte das elegant erfolgen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# untested

my $str='P=HierStehtIrgendwas,I=NocheinText';

# long way (with room for further checks (defined, valid values, ...)
my %data;
for my $pair ( split /,/, $str ) {
  my ( $key, $value ) = split /=/, $pair;

  $data{$key} = $value;
}

# if you are sure, that data in $str is always valid
my %data = split /[=,]/, $str;


Danach stehen die Informationen im Hash %data zur Verfügung.
Last edited: 2012-04-23 12:42:43 +0200 (CEST)
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!

View full thread Teilstring zurückgeben