我正在尝试在一串文字中搜索以“#”(hashtags)开头的单词,并在单词中附加/添加HTML <a>#link</a>
链接标记。我想出了下面的正则表达式:
string = '#hello here are some #text'
return re.sub('^#\w*|(?<=\s)#\w*', '<a href="{{url_for("main.tag")}}">#\1</a>', string)
它返回:
<a href="{{url_for("main.tag")}}">#\x01</a> here is some <a href="{{url_for("main.tag")}}">#\x01</a>
只有一个小问题:它不包含匹配的字。需要对正则表达式做些什么?
答案 0 :(得分:2)
您需要使用
re.sub('(^#\w*|(?<=\s)#\w*)', r'<a href="{{url_for("main.tag")}}">\1</a>', string)
原因
i)没有捕获组。包括一个
ii)您可以在替换时使用原始字符串r
文字
捕获组(如果您未使用\\1
,则为r
)
iii)无需包含#
,因为它已被捕获