値がこのコードによって生成されたUUID4と等しいことを検証するにはどうすればよいですか?
uuid.uuid4().hex
正規表現でしょうか?この形式の32文字の長さの文字列から生成される値:
60e3bcbff6c1464b8aed5be0fce86052
私の知る限り、Martijn の答えは 100% 正しいわけではありません。UUID-4 には 16 進文字の 5 つのグループがあり、最初は 8 文字、2 番目は 4 文字、3 番目は 4 文字、4 番目は 4 文字、5 番目は 12 文字です。
ただし、有効な UUID4 にするためには、3 番目のグループ (中央のグループ) を 4 で開始する必要があります。
00000000-0000-4000-0000-000000000000
^
4 番目のグループは、8、9、a、または b で始まる必要があります。
00000000-0000-4000-a000-000000000000
^ ^
したがって、Martijn の正規表現を次のように変更する必要があります。
import re
uuid4hex = re.compile('[0-9a-f]{12}4[0-9a-f]{3}[89ab][0-9a-f]{15}\Z', re.I)
お役に立てれば!
簡単です:
import re
uuid4hex = re.compile('[0-9a-f]{32}\Z', re.I)
このメソッドを使用する場合、これは正確に32 個の 16 進数文字である文字列にのみ一致します.match()
(文字列の先頭から検索します。vs. を参照してください.search()
).match()
。は文字列の\Z
末尾に一致します ($
文字列または改行の末尾に一致するのに対して)。