NF 1, SS 1997: Lösungsblatt 3: Reguläre Ausdrücke


Aufgabe 1: Nummernschilder

Modellieren Sie deutsche Autonummernschilder als reguläre Ausdrücke. Verwenden Sie geeignete Unix-Tools, um alle Nummernschilder aus einem Text herauszusuchen. Als Datenmaterial diene die Datei

/users/rzdspc5/nf1/xamtrup/schilder.txt

Gehen Sie davon aus, daß lediglich Kennzeichen wie HH-XY 1023 oder M-DJ 13 auftreten. Zur Lösung geeignete Tools können z.B. sein grep, sed, tr, etc.

Welche Kommandozeile ist hierzu notwendig? Was für außergewöhnliche Probleme können die Lösung komplizieren? Die Liste kann z.B. so aussehen:

...
STD-A 1
SL-X 7654
M-J 13
PI-KI 176
HH-AD 1045
...

Lösung hierzu

sed -e's/[<>]/ /g' schilder.txt |
sed -n -e's/[A-Z]\{1,3\}-[A-Z]\{1,2\} [1-9][0-9]\{0,3\}/<!&>/gp' |
sed -e's/^./>&/;s/.$/&</' |
sed -e's/>[^<]*<//g' |
sed -e's/^\!//' |
tr "!" "\012"

Im Einzelnen:

Aufgabe 2: Uhrzeiten

Modellieren Sie Uhrzeiten als regulären Ausdruck. Erlaubt sein sollen z.B. die Angaben

10 Uhr 45
Viertel vor 3
23 Uhr 10
Halb 5

Lösung hierzu

Stunde ::= [0-9]|1[0-9]|2[0-3]
Minute ::= [1-9]|[0-5][0-9]
Minute2 ::= [1-9]|[0-2][0-9]

`Stunde' Uhr `Minute'
(((Kurz|Viertel|`Minute2')(vor|nach))|Halb|Viertel|Dreiviertel) Stunde

Aufgabe 3: Gleitkommazahlen

Modellieren Sie Gleitkommazahlen als regulären Ausdruck. Der Ausdruck soll Zahlen beschreiben können wie

1.3E10
-2E-5
.34567
-5

Lösung hierzu

Vorzeichen ::= [-+]\{0,1\}
Zahl ::= [0-9]+
Mantisse ::= `Vorzeichen'`Zahl'(.`Zahl')\{0,1\}
Exponent ::= [eE]`Vorzeichen'`Zahl'
`Mantisse'`Exponent'\{0,1\}


Author: Jan W. Amtrup
Document:
Last modified: