如何使用python中的正则表达式将HTML子字符串附加并预先添加到匹配的字符串中?

时间:2016-05-21 04:14:48

标签: python html regex

我正在尝试在一串文字中搜索以“#”(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>

只有一个小问题:它不包含匹配的字。需要对正则表达式做些什么?

1 个答案:

答案 0 :(得分:2)

您需要使用

re.sub('(^#\w*|(?<=\s)#\w*)', r'<a href="{{url_for("main.tag")}}">\1</a>', string)

原因

i)没有捕获组。包括一个

ii)您可以在替换时使用原始字符串r文字 捕获组(如果您未使用\\1,则为r

iii)无需包含#,因为它已被捕获