Wie erstelle ich einen regulären Ausdruck, der Hexadezimalzahlen in einem Text erkennt?
Zum Beispiel '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3' und '8BADF00D'.
Wie erstelle ich einen regulären Ausdruck, der Hexadezimalzahlen in einem Text erkennt?
Zum Beispiel '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3' und '8BADF00D'.
Antworten:
Wie wäre es mit folgendem?
0[xX][0-9a-fA-F]+
Entspricht dem Ausdruck, der mit einer 0 beginnt, gefolgt von einem x in Klein- oder Großbuchstaben, gefolgt von einem oder mehreren Zeichen in den Bereichen 0-9 oder af oder AF
/0x[\da-f]/i
+1 gekürzt werden , aber ansonsten.
Die genaue Syntax hängt von Ihren genauen Anforderungen und Ihrer Programmiersprache ab, aber im Grunde genommen:
/[0-9a-fA-F]+/
oder einfacher, i
macht es unabhängig von Groß- und Kleinschreibung.
/[0-9a-f]+/i
Wenn Sie das Glück haben, Ruby zu verwenden, können Sie Folgendes tun:
/\h+/
BEARBEITEN - Steven Schroeders Antwort hat mir klar gemacht, dass mein Verständnis des 0x-Bits falsch war, deshalb habe ich meine Vorschläge entsprechend aktualisiert. Wenn Sie auch mit 0x übereinstimmen möchten, sind die Äquivalente
/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i
MEHR HINZUGEFÜGT - Wenn 0x optional sein muss (wie die Frage impliziert):
/(0x)?[0-9a-f]+/i
Dies wird mit oder ohne 0x
Präfix übereinstimmen
(?:0[xX])?[0-9a-fA-F]+
Es ist erwähnenswert, dass die Erkennung eines MD5 (eines der Beispiele) folgendermaßen erfolgen kann:
[0-9a-fA-F]{32}
Wenn Sie Perl oder PHP verwenden, können Sie ersetzen
[0-9a-fA-F]
mit:
[[:xdigit:]]
Nur für die Aufzeichnung würde ich Folgendes spezifizieren:
/^[xX]?[0-9a-fA-F]{6}$/
Was in unterscheidet , dass es überprüft, ob sie hat die sechs gültige Zeichen enthalten und auf Klein- oder Groß x , falls wir eine haben.
Wenn Sie nach einem bestimmten Hex-Zeichen in der Mitte der Zeichenfolge suchen, können Sie "\ xhh" verwenden, wobei hh das hexadezimale Zeichen ist. Ich habe es versucht und es funktioniert. Ich verwende Framework für C ++ Qt, aber es kann Probleme in anderen Fällen lösen, abhängig von der Art, die Sie verwenden müssen (PHP, Javascript, Python, Golang usw.).
Diese Antwort stammt von: http://ult-tex.net/info/perl/
Dieser stellt sicher, dass Sie nicht mehr als drei gültige Paare haben:
(([a-fA-F]|[0-9]){2}){3}
Mehr oder weniger als drei Paare gültiger Zeichen stimmen nicht überein.
Für den Fall , müssen Sie dies in einem Eingang , an dem der Benutzer eingeben kann 0
und 0x
auch , aber nicht eine Hex - Zahl ohne 0x
Präfix:
^0?[xX]?[0-9a-fA-F]*$
Ein weiteres Beispiel: Hexadezimalwerte für CSS-Farben beginnen mit einem Nummernzeichen oder einem Hash (#), dann mit sechs Zeichen, die entweder eine Ziffer oder ein Buchstabe zwischen A und F sein können.
^#[0-9a-fA-F]{6}