我尝试谷歌一些,但它太具体了,我对python的正则表达式完全不熟悉。我可以知道如何在符号@之后删除整个字符串,直到下一个空格?虽然这是我做的但没有运气
s = re.sub('@[^\s]+', '',s)
答案 0 :(得分:1)
以下正则表达式怎么样?
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 的评论)。
答案 1 :(得分:1)
我认为这对你不起作用,因为你也删除了'@'。
我删除整个字符串 符号@后直到下一个空格
试试这个:
In [1]: s='foo@barxyz trash trash'
In [2]: import re
In [3]: re.sub('(?<=@)[^\s]+','',s)
Out[3]: 'foo@ trash trash'
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为这就是你想要的:
>>> 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