我有一个棘手的正则表达式,我无法成功实现它。
我需要正则表达式:
AEBE52E7-03EE-455A-B3C4-E57283966239
我用它来做这样的识别:
url(r'^user/(?P<identification>\<regular expression>)$', 'view_add')
我尝试了一些像这样的表达式:
\[A-Za-z0-9]{8}^-{1}[A-Za-z0-9]{4}^-{1}[A-Za-z0-9]{4}^-{1}[A-Za-z0-9]{4}^-{1}[A-Za-z0-9]{12}
\........^-....^-....^-....^-............
有人可以帮助我吗?
感谢。
答案 0 :(得分:4)
只需删除正则表达式中的所有^
符号。
>>> s = 'AEBE52E7-03EE-455A-B3C4-E57283966239'
>>> re.match(r'[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$', s)
<_sre.SRE_Match object; span=(0, 36), match='AEBE52E7-03EE-455A-B3C4-E57283966239'>
>>> re.match(r'[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$', s).group()
'AEBE52E7-03EE-455A-B3C4-E57283966239'
-{1}
将被写为-
似乎所有分隔的单词都是十六进制代码。因此,您可以使用[0-9a-fA-F]
代替[A-Za-z0-9]
。
>>> re.match(r'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', s).group()
'AEBE52E7-03EE-455A-B3C4-E57283966239'
答案 1 :(得分:1)
您不需要^
而-
不需要{1}
,您可以使用以下模式:
\w{8}-\w{4}-\w{4}-\w{4}-\w{12}
注意 \w
将匹配任何字词(A-Za-z0-9
)
或者:
\w{8}-(\w{4}-){3}\w{12}
如评论中所述,如果您使用UUID作为一种更有效的方式,则可以使用以下模式:
[a-fA-F\d]{8}(-[a-fA-F\d]{4}){3}-[a-fA-F\d]{12}