41
ok habe die obige Zusammenfassung entsprechend editiert. Jörg hat Dein Adlerauge sonst noch Fehler gesichtet?
z.B. der IP-Range 64.4.0.0 - 64.4.63.255
64.4. ist beiden gemein, der . wird escaped, da er sonst für ein einzelnes beliebigs Zeichen (ausgenommen Zeilenvorschub) steht:
64\.4\.
Dann der 3. Block: 0-63 - Man kann nicht schreiben [0-63], da immer nur zeichenweise Bereiche akzeptiert werden, keine Zahlenbereiche.
Deshalb zuerst den Bereich 64.4.0.* bis 64.4.9.* definieren: [0-9]
Also haben wir 64\.4\.[0-9]\.
Das trifft auf 64.4.2. wie auf 64.4.8. oder 64.4.9. zu - also nur Einer-Ziffern im 3. Block.
Wir haben aber auch IP-Blöcke mit Zehnerziffern, nicht nur Einer-Ziffern.
Deshalb 64.4.60 - 64.4.63: 6[0-3]: also
Also haben wir 64\.4\.6[0-3]\.
Das schließt aber alle IP-Blöcke aus, die die Zehnerziffer nicht 6 haben.
Aber wir wollen nur die mit einer Einer-Stelle von 0 bis 9 haben, wenn die Zehnerstelle bis 5 ist (z.B. 64 oder 69 wollen wir ja nicht), also noch [0-5][0-9] - das trifft auf 59 zu, nicht aber auf 64.
Kombinieren wir das:
64\.4\.([0-9]|6[0-3]|[0-5][0-9])\.
64\.4\.([0-5]|[0-9]6[0-3])\.