Python-regex将url与mongo对象id匹配

Python-regex将url与mongo对象id匹配,python,regex,Python,Regex,我正在尝试编写与以下格式的url匹配的正则表达式: /api/v1/users/<mongo_object_id>/submissions 非常感谢您的帮助。这就可以了(考虑24个十六进制字符),在字符串之前使用raw关键字,因此无需使用双斜杠转义: r'\/api\/v1\/users\/([a-f\d]{24})\/submissions' /api/v1/users/([0-9a-f]{24})/submissions Python控制台: >>> re

我正在尝试编写与以下格式的url匹配的正则表达式:

/api/v1/users/<mongo_object_id>/submissions
非常感谢您的帮助。

这就可以了(考虑24个十六进制字符),在字符串之前使用raw关键字,因此无需使用双斜杠转义:

r'\/api\/v1\/users\/([a-f\d]{24})\/submissions'
/api/v1/users/([0-9a-f]{24})/submissions
Python控制台:

>>> re.findall(r'\/api\/v1\/users\/([a-f\d]{24})\/submissions','/api/v1/users/556b352f87d4693546d31185/submissions')
['556b352f87d4693546d31185']
这就可以了(考虑24个十六进制字符),在字符串之前使用raw关键字,因此无需使用双斜杠转义:

r'\/api\/v1\/users\/([a-f\d]{24})\/submissions'
/api/v1/users/([0-9a-f]{24})/submissions
Python控制台:

>>> re.findall(r'\/api\/v1\/users\/([a-f\d]{24})\/submissions','/api/v1/users/556b352f87d4693546d31185/submissions')
['556b352f87d4693546d31185']

它看起来像一个对象的ID是一个十六进制数,这意味着它由如下简单的东西匹配:

[0-9a-f]+
如果要确保始终为24个字符:

[0-9a-f]{24}
把它扔到两条斜线之间:

r'\/api\/v1\/users\/([a-f\d]{24})\/submissions'
/api/v1/users/([0-9a-f]{24})/submissions
它应该会起作用

注意:您可能必须避开斜杠,这取决于Python的正则表达式语法的工作方式。如果我没记错,你可以这样做:

import re
re.findall(r'/api/v1/users/([0-9a-f]{24})/submissions', url)


如果你想让整个事情不区分大小写。

它看起来像一个对象的ID是一个十六进制数,这意味着它由如下简单的东西匹配:

[0-9a-f]+
如果要确保始终为24个字符:

[0-9a-f]{24}
把它扔到两条斜线之间:

r'\/api\/v1\/users\/([a-f\d]{24})\/submissions'
/api/v1/users/([0-9a-f]{24})/submissions
它应该会起作用

注意:您可能必须避开斜杠,这取决于Python的正则表达式语法的工作方式。如果我没记错,你可以这样做:

import re
re.findall(r'/api/v1/users/([0-9a-f]{24})/submissions', url)


如果你想让整件事不区分大小写。

你能给出
mongo_object_id
的例子吗?556B352F87D46935465D31185(也在帖子中添加了它)请从你的标题中删除标签。有关更多信息,请参见。您能否给出
mongo_object_id
的示例?556b352f87d4693546d31185(也在文章中添加了它)请从标题中删除标记。有关更多信息,请参阅。出于好奇,为什么先进行前瞻,然后再进行匹配?我只是在修复原始的正则表达式,这一点不清楚,但这并没有真正意义,感谢反馈。实际上,如果使用超过24个字符的前瞻解决方案,出于好奇,为什么你先做一个前瞻,然后再做一个匹配?我只是在修复原始的正则表达式,这一点不清楚,但这真的没有意义,谢谢你的反馈。事实上,如果超过24个字符,前瞻解决方案就会失败