我有正则表达式在字符串中查找@usernames。我可以找到@username,但问题是它删除了我的忽略字符。
我想要的: @username我同意!
我得到了什么: @username我同意!
代码:
def rplcheck(match):
str = match.group(1)
return '<a href="/medlemmar/%s/" class="user-tag">@%s</a>' % (str.lower(), str)
@register.filter
def usertag(value):
regex = r'@([\w]+)(?:$|[ ,!?:;.\-<\r\n])'
p = re.compile(regex, re.IGNORECASE)
value = p.sub(rplcheck, value)
return value
答案 0 :(得分:2)
您不需要非捕获组来断言字符串的结尾或字符串中的那些字符。您可以使用一个捕获组在@
...
@(\w+)
此外,您可以完全删除usertag函数并将其调用为此。
>>> re.sub(r'@(\w+)', rplcheck, text)
答案 1 :(得分:1)
我在想这个:
regex = r'@([\w]+)(?:$|[ ,!?:;.\-<\r\n])'
应该是:
regex = r'@([\w]+)'