1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
##########################################
# Precise-Input-Check (PIC) / Story-Code #
##########################################
my $gruppenstatus = "N";
my $zahl1status = "N";
my $zahl2status = "N";
my $zahl3status = "N";
my $kennstatus = "N";
my $gruppenstelle = substr($customstorycode, 0, 2);
my $zahl1stelle = substr($customstorycode, 2, 1);
my $zahl2stelle = substr($customstorycode, 3, 1);
my $zahl3stelle = substr($customstorycode, 4, 1);
my $kennstelle = substr($customstorycode, 5, 1);
if ($gruppenstelle eq "KG") {$gruppenstatus = "Y";}
if ($kennstelle eq "J") {$kennstatus = "Y";}
if ($kennstelle eq "M") {$kennstatus = "Y";}
if ($kennstelle eq "B") {$kennstatus = "Y";}
if ($gruppenstatus eq "Y" and $zahl1status eq "Y" and $zahl2status eq "Y" and $zahl3status eq "Y" and $kennstatus eq "Y") { goto FirstCheckOK;}
goto StoryCodeUmfangError;
1
2
3
4
if ($zahl1stelle eq "0") {$zahl1status = "Y";}
if ($zahl1stelle eq "1") {$zahlstatus = "Y";}
if ($zahl1stelle eq "2") {$zahl1status = "Y";}
if ($zahl1stelle eq "usw...") {$zahl1status = "Y";}
Guest MuffiDer Code schaut, ob $string mit KG beginnt, dann ein Leerzeichen kommt, dann Ziffer (= \d) 3 mal, dann Leerzeichen, dann irgendwas aus der Menge J,M oder A und dann der String aus ist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
host:prompt> perl -MYape::Regex::Explain -le " my $p = YAPE::Regex::Explain->new(qr{^KG\d{3}[JMA]$}); print $p->explain();"
The regular expression:
(?-imsx:^KG\d{3}[JMA]$)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
^ the beginning of the string
----------------------------------------------------------------------
KG 'KG'
----------------------------------------------------------------------
\d{3} digits (0-9) (3 times)
----------------------------------------------------------------------
[JMA] any character of: 'J', 'M', 'A'
----------------------------------------------------------------------
$ before an optional \n, and the end of the
string
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
my @examples=( 'KG 001 J', 'KG 003 M', 'KG 004 A', 'KG 007 X', 'KG 020 M', 'KG 045 A', 'KG 1234 J', ); for my $string (@examples) { if($string=~/KG\s(\d{3})\s([JMA])/) { my ($number,$suffix)=($1+0,$2); print "$string => "; print "NUMBER: $number "; print "SUFFIX: $suffix\n"; } }
1 2 3 4 5 6 7 8 9 10
my $customstorycode=kommt_von_irgendwo(); if($customstorycode=~/^KG \d{3} [JMA]$/) { verabeite_weiter($customstorycode); } else { verabeite_weiter('StoryCodeUmfangError'); }
1
2
3
4
5
6
7
8
##########################################
# Precise-Input-Check (PIC) / Story-Code #
##########################################
if ($customstorycode =~ /^KG\d{3}[JMA]$/) { goto FirstCheckOK;}
goto StoryCodeUmfangError;
FirstCheckOK: