Skip to main content

Hexadecimale getallen herkennen

Stel we willen valideren of iets een hexadecimaal getal is.

Een hexadecimaal getal is een getal dat bestaat uit de cijfers 0 t/m 9 en A t/m F.

9A is dus een valide hexadecimaal getal, maar 1G niet.

Met de volgende code wordt een hexadecimaal getal herkend:

import re

def is_valid_hexadecimaal(hexadecimaal):
    # Reguliere expressie om een geldig hexadecimaal getal te valideren
    patroon = r'^[0-9A-F]+$'
    
    # Controleer of de opgegeven string overeenkomt met het patroon
    if re.match(patroon, hexadecimaal):
        return True
    else:
        return False

# Voorbeeldgebruik:
hex_nummer1 = "1A2F"
hex_nummer2 = "G3B8"
print(is_valid_hexadecimaal(hex_nummer1))  # Output: True
print(is_valid_hexadecimaal(hex_nummer2))  # Output: False

De reguliere expressie werkt als volgt:

De reguliere expressie werkt als volgt:

Teken Uitleg
^ Dit betekent dat we een match willen maken vanaf het begin van de string.
[  ] De rechte haakjes geven aan dat we een groep gaan maken, een groep is een groep karakters waarmee de tekst moet worden gevalideerd.
[0-9A-F] Dit betekent dat we een 0 t/m.9 of een A t/m F willen matchen.
+ Het plus teken betekent dat we hetgeen dat tussen [] staat 1 of meer keer willen matchen.
$ Betekent dat we tot aan het einde van de string willen matchen.

Begin en eind ( ^en $ )

Stel dat we het begin en eind teken weglaten, dus dat we de reguliere expressie veranderen in:

[0-9A-F]+

Dan werkt die nog steeds, maar dan wordt bijvoorbeeld QQQ1FXXX ook gevalideerd. Dit is zo omdat er een match is namelijk 1F matched.

Stel we veranderen de expressie in:

^[0-9A-F]+

Dan valideert QQQ1FXXX niet meer, maar 1FXXX wel.

Met:

^[0-9A-F]+$

Valideert alleen 1F nog maar.

Opdracht

Pas de code aan zodat je een derde hexadecimaal getal test.

hex_nummer3 = "13b8"

print(is_valid_hexadecimaal(hex_nummer3))

Met de code die je hebt, wordt dit hexadecimale getal niet gevalideerd. Er staat namelijk en b (kleine letter) in en die heeft geen match met de reguliere expressie.

Pas de reguliere expressie aan zodat ook hexadecimale getallen met een kleine letter worden gevalideerd. Dus 12b8, of aa of Cb moeten allemaal worden gevalideerd.

Inleveren

  1. Aangepaste code.

--