정규식 변수를 문자열로 채우고 싶습니다.어떻게 정규식 문자열을 매개 변수로 채우십시오.
import re
hReg = re.compile("/robert/(?P<action>([a-zA-Z0-9]*))/$")
hMatch = hReg.match("/robert/delete/")
args = hMatch.groupdict()
args 변수는 이제 { "action": "delete"}가있는 사전입니다.
어떻게이 과정을 되돌릴 수 있습니까? args dict 및 regex 패턴을 어떻게 문자열 "/ robert/delete /"얻을 수 있습니까?
다음과 같은 기능을 가질 수 있습니까?
def reverse(pattern, dictArgs):
이
을 추가 당신은 당신이에 관심이 있다는 연장에 문자열을 설명하는 값의 사전이 있다면 ... 왜 당신이 필요로하는 것 그 문자열을 다시 빌드하는 정규식? 당신은 이미 차이를 만드는 모든 비트를 가지고 있습니다. 이러한 비트를 사용하고 문자열을 만드는 함수를 작성하기 만하면됩니다. (즉, 이것은 불가능하지 않으므로 아마도 시간을 낭비하지 않을 것입니다.) – Tomalak
이 "기능"은 Django에서 URL 문자열을 얻기 위해 사용되는 reverse()와 같은 기능을 구현하고 싶습니다. 그것은 가능한 장고 args와 그냥 "brute-force"패턴? – 0xBAADF00D
파이썬의 것입니다. 장고가 아닙니다. 하지만 요점은 이것입니다. 예를 들어, "/ robe [또는] t?/(? P ((?! foo) [a-zA-Z0-9] *))"'? regex에는 서로 의존하는 선택적 및 조건부 파트가 있기 때문에 일치 목록에서 원래 문자열로 되돌릴 방법이 없습니다. 따라서 허용되는 정규식의 극히 * 좁은 하위 집합을 정의하거나 구문 분석기를 작성합니다. 아마도 일부 부작용이 없거나 심각하게 제한되어 있거나 더 생산적으로 시간을 소비하게됩니다. ;) Regex matching은 단방향 길이다. –
Tomalak