Python对Django的重新搜索帮助



我需要通过我正在定制的Django自定义模板标记来替换html字符串的一部分。

原始格式的字符串如下:

arg = "<a class='login-password-forget' tabindex='1' href='{% url 'account:pwdreset'%}'>Forgot your password?</a>"

我需要使用re.search((.将{% url 'account:pwdreset'%}部分替换为url字符串

我写的代码很笨拙,如果能找到更好的方法来实现这一点,我将不胜感激。

url_string = re.search("{.*?}", arg)
url_string_inner = re.search("'(.+?)'", url_string.group())
add_html = SafeText(''.join([arg.split('{')[0], reverse(url_string_inner.group(1)), arg.split('}')[1]]))

更新!!我运行的解决方案如下:

url_string = re.search("{.*?}", arg)
url_string_inner = re.search("'(.+?)'", url_string.group())
add_html = SafeText(''.join([arg.split('{')[0], reverse(url_string_inner.group(1)), arg.split('}')[1]]))

感谢第四只鸟的帮助。

如果您只想用'account:pwdreset'替换零件,您可以使用带有捕获组的re.sub,并在单引号之间的替换中使用该组

'{%s*url '([^']*)'%}

Regex演示| Python演示

import re
pattern = r"'{%s*url '([^']*)'%}"
s = "<a class='login-password-forget' tabindex='1' href='{% url 'account:pwdreset'%}>Forgot your password?</a>"
print(re.sub(pattern, r"'1'", s))

输出

<a class='login-password-forget' tabindex='1' href=account:pwdreset>Forgot your password?</a>

最新更新