regex Python re.search帮助Django [已关闭]

vfwfrxfs  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(115)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

9个月前关闭。
此帖子在8个月前已编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
我需要通过一个Django自定义模板标签来替换html字符串的一部分。
原始格式的字符串如下所示:

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

我需要使用www.example.com()将{% url 'account:pwdreset'%}部分替换为url字符串re.search。
我写的代码很笨拙,我希望能找到更好的方法来实现同样的效果。

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]]))

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

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]]))

谢谢四鸟帮忙。

qv7cva1a

qv7cva1a1#

如果您只想将该部分替换为'account:pwdreset',则可以将re.sub与捕获组一起使用,并在替换中将该组用单引号括起来

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

Regex demo|Python demo

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>

相关问题