Thread Conditional RegExp (8 answers)
Opened by PHilbs at 2010-02-20 20:44

topeg
 2010-02-20 22:54
#133394 #133394
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
So kann man das auch machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @list=(
  'hund:bello,12,w',
  'katze:mini,m',
  'hund:lessi,8,m',
  'katze:kassandra,w',
);

for my $line (@list)
{
  $line=~/^(?<t>katze|hund):(?<n>[^,]+),(?:(?<g>\d+),)?(?<s>w|m)$/;
  $line={%+};
}

print Dumper(\@list);

das Funktioniert, weil "\d+," an der Stelle im String einmalig ist, und es zu keiner Verwechselung beim Match kommen kann.
Last edited: 2010-02-20 22:56:06 +0100 (CET)

View full thread Conditional RegExp