Back to Deck
[snippet]
Python URL Pattern Matcher
ИСХОДНИК Python
ВЕРСИЯ 1.0
АВТОР Cododel
Простой класс без зависимостей для сопоставления URL с шаблонами, содержащими именованные параметры. Конвертирует шаблоны вида /api/resource/<id> в регулярные выражения и извлекает параметры.
Использование
matcher = URLPatternMatcher('/api/users/<user_id>/posts/<post_id>')result = matcher.match('/api/users/123/posts/456')# Результат: {'user_id': '123', 'post_id': '456'}Исходный код
import jsonimport re
class URLPatternMatcher: def __init__(self, pattern: str): self.pattern = pattern.rstrip('/')
def match(self, path: str) -> dict | bool: """Match URL pattern Path format example: /api/automation/<service>/<entity>/<id>/<action> """ pattern_re = re.compile(r'(<([^>]+)>)') matches = pattern_re.findall(self.pattern)
for match in matches: self.pattern = self.pattern.replace( match[0], fr'(?P<{match[1]}>[^/]+)')
print(self.pattern) res = re.match(self.pattern, path)
if res: return res.groupdict() else: return False