我试图用谷歌搜索一些,但它太具体了,我对 python 的正则表达式完全陌生。我可以知道如何删除符号 @ 之后的整个字符串,直到下一个空格?虽然这是我做的,但没有运气
s = re.sub('@[^\s]+', '',s)
下面的正则表达式呢?
re.sub(r'@.*?(?=\s)', '', s)
例子:
>>> re.sub(r'@.*?(?=\s)', '', 'text before `at`@text-right-arter`at` text after first space')
'text before `at` text after first space'
>>>
它的行为与您的解决方案完全相同(更新:实际上并非如此。请参阅下面的nhahtdh评论)。
我认为这对您不起作用,因为您也删除了“@”。
我删除符号@之后的整个字符串,直到下一个空格
试试这个:
In [1]: s='foo@barxyz trash trash'
In [2]: import re
In [3]: re.sub('(?<=@)[^\s]+','',s)
Out[3]: 'foo@ trash trash'
我认为这就是你想要的:
>>> import re
>>> s = 'unchanged1 @remove unchanged2'
>>> print re.sub('@\S+', '', s)
unchanged1 unchanged2
根据OP:'删除符号@之后的整个字符串,直到下一个空格'
删除多余的空间:
>>> print re.sub('@\S+ ', '', s)
unchanged1 unchanged2
包括“@”:
>>> print re.sub('@\S+ ', '@', s)
unchanged1 @ unchanged2