Thread Regex mit optionaler Gruppe (3 answers)
Opened by pinwheel at 2015-07-13 17:14

Raubtier
 2015-07-13 17:41
#181565 #181565
User since
2012-05-04
1079 Artikel
BenutzerIn
[default_avatar]
Wie wärs mit

^(\d{9}):(?:.*?(H\d{9})|)

Also eine Oder-Gruppe an zweiter Stelle, von der der erste Teil die Zahl mit H enthält, also zuerst gematcht werden wird, der zweite Teil ist einfach leer, sodass $2 undef ist, wenn es keine Zahl mit H gibt.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
my $re = qr/^(\d{9}):(?:.*?(H\d{9})|)/;

while(<DATA>) {
  if (/$re/) {
    print "\$1 = $1; \$2 = $2\n";
  }
}

__DATA__
410304100: 410304100 410304101
410304100: H410304100 410304101
410304100: 410304100 H410304101


Ergibt:
Quote
$1 = 410304100; $2 =
$1 = 410304100; $2 = H410304100
$1 = 410304100; $2 = H410304101

View full thread Regex mit optionaler Gruppe