Python 正则表达式删除忽略字符

Python 正则表达式删除忽略字符,python,regex,Python,Regex,我用正则表达式在字符串中查找@usernames。我可以找到@username,但问题是它正在删除我的忽略字符 我想要的是: @我同意 我得到的是: @用户名我同意 代码: def rplcheck(匹配): str=匹配。组(1) 返回“”%(str.lower(),str) @寄存器过滤器 def usertag(值): regex=r'@([\w]+)(?:$,!?:;。\-我想得太多了: regex = r'@([\w]+)(?:$|[ ,!?:;.\-<\r\n])' 您不需要

我用正则表达式在字符串中查找@usernames。我可以找到@username,但问题是它正在删除我的忽略字符

我想要的是: @我同意

我得到的是: @用户名我同意

代码:

def rplcheck(匹配):
str=匹配。组(1)
返回“”%(str.lower(),str)
@寄存器过滤器
def usertag(值):

regex=r'@([\w]+)(?:$,!?:;。\-我想得太多了:

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

您不需要非捕获组来断言字符串的结尾或字符串前面的字符。您可以使用一个捕获组来保留
@

@(\w+)
此外,您还可以完全删除usertag函数,并像这样调用它

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

您是否控制了输入字符串?如果是,则使用可能更适合此任务。不要使用内置关键字作为变量名。@Zeeker否,由用户生成。您能否提供一个示例以及预期的输出?
@(\w+)
>>> re.sub(r'@(\w+)', rplcheck, text)