Das funktioniert nicht, wenn nur eine Nr. angegeben ist, Leerzeichen auftauchen, oder '/' statt '-'. Etwas allgemeiner könnte man es so machen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $regex = qr(
(\d+\s*[a-zA-Z]?)
(?:
\s*[-/]\s*
(\d+\s*[a-zA-Z]?)
)?
)x;
my @nr = ("Hauptstr. 77", "Hauptstr. 77-88 a", "Hauptstr. 77 / 79a", "Hauptstr. 77b - 79");
for my $testnr (@nr) {
my ($nr1, $nr2) = $testnr =~ /$regex/;
printf("%s, %s\n", $nr1, $nr2);
}
Ausgabe:
77,
77, 88 a
77 , 79a
77b, 79
EVtl. Leerzeichen kann man ja einfach ersetzen, falls gewünscht.
Gruß FIFO
Editiert von FIFO: Ausgabe ergänzt
Last edited: 2012-04-28 11:02:29 +0200 (CEST)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"