正規表現を使用して、文字列が16進数であるかどうかを検証しています。
私が使用した式はです^[A-Fa-f0-9]$
。これを使用すると、文字列AABB10
は有効な16進数として認識されますが、文字列10AABB
は無効として認識されます。
どうすれば問題を解決できますか?
正規表現を使用して、文字列が16進数であるかどうかを検証しています。
私が使用した式はです^[A-Fa-f0-9]$
。これを使用すると、文字列AABB10
は有効な16進数として認識されますが、文字列10AABB
は無効として認識されます。
どうすれば問題を解決できますか?
ほとんどの場合、が必要+
ですregex = '^[a-fA-F0-9]+$'
。0x
ただし、文字列の先頭にあるオプションなどを(おそらく)慎重に検討します。これにより、文字列が作成され^(0x|0X)?[a-fA-F0-9]+$'
ます。
^[A-Fa-f0-9]+$
動作するはずです、+
一致1
する、またはそれ以上の文字。
Python の使用:
In [1]: import re
In [2]: re.match?
Type: function
Base Class: <type 'function'>
String Form:<function match at 0x01D9DCF0>
Namespace: Interactive
File: python27\lib\re.py
Definition: re.match(pattern, string, flags=0)
Docstring:
Try to apply the pattern at the start of the string, returning
a match object, or None if no match was found.
In [3]: re.match(r"^[A-Fa-f0-9]+$", "AABB10")
Out[3]: <_sre.SRE_Match at 0x3734c98>
In [4]: re.match(r"^[A-Fa-f0-9]+$", "10AABB")
Out[4]: <_sre.SRE_Match at 0x3734d08>
理想的には、次のような一般的なフォーマット^(0[xX])?[A-Fa-f0-9]+$
の文字列と照合できるようにする必要があるかもしれません0x
0x1A2B3C4D
In [5]: re.match(r"^(0[xX])?[A-Fa-f0-9]+$", "0x1A2B3C4D")
Out[5]: <_sre.SRE_Match at 0x373c2e0>
'+'を忘れましたか?「^[A-Fa-f0-9]+$」を試してみます