Chciałbym wypełnić zmienne regex ciągiem.W jaki sposób wypełnić ciąg regex o parametrach
import re
hReg = re.compile("/robert/(?P<action>([a-zA-Z0-9]*))/$")
hMatch = hReg.match("/robert/delete/")
args = hMatch.groupdict()
zmienna args jest teraz dict z {"action": "delete"}.
Jak mogę odwrócić ten proces? W jaki sposób mogę uzyskać ciąg "/ robert/delete /" z args dict i regex pattern?
Czy możliwe jest posiadanie takiej funkcji?
def reverse(pattern, dictArgs):
Dziękuję
Jeśli masz słownika wartości, które opisują swój ciąg w stopniu, że jesteś nim zainteresowany ... Dlaczego trzeba regex, aby ponownie zbudować ten ciąg? Masz już wszystkie bity, które mają znaczenie. Wystarczy napisać funkcję, która pobiera te bity i tworzy ciąg znaków. (Innymi słowy, nie jest to możliwe i prawdopodobnie tracisz czas na próbowanie.) – Tomalak
Chciałbym, aby ta "funkcja" zaimplementowała funkcję typu reverse() używaną w Django, aby uzyskać ciąg URL. Możliwe jest, że Django po prostu "brutalny-force" z args? – 0xBAADF00D
Jeśli w ogóle jest to rzecz Pythona, a nie Django. Ale chodzi mi o to. W jaki sposób odwrócisz, na przykład, '"/robe [lub] t?/(? P ((?! Foo) [a-zA-Z0-9] *)) "'? Nie ma sposobu, aby przejść z listy dopasowań z powrotem do oryginalnego ciągu, ponieważ wyrażenie regularne zawiera części opcjonalne i warunkowe, które zależą od siebie nawzajem. Tak więc albo definiujesz * wyjątkowo * wąski podzbiór wyrażenia regularnego, który jest dozwolony, i zapisujesz dla niego parser, prawdopodobnie wciąż brakuje niektórych przypadków bocznych i poważnie ograniczasz się - lub spędzisz czas bardziej produktywnie. ;) Dopasowanie Regex jest ulicą jednokierunkową. –
Tomalak