正则表达式删除忽略字符

时间:2015-02-25 12:59:19

标签: python regex

我有正则表达式在字符串中查找@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

2 个答案:

答案 0 :(得分:2)

您不需要非捕获组来断言字符串的结尾或字符串中的那些字符。您可以使用一个捕获组在@ ...

之后保留单词字符
@(\w+)

此外,您可以完全删除usertag函数并将其调用为此。

>>> re.sub(r'@(\w+)', rplcheck, text)

答案 1 :(得分:1)

我在想这个:

regex = r'@([\w]+)(?:$|[ ,!?:;.\-<\r\n])'

应该是:

regex = r'@([\w]+)'