1

我试图用谷歌搜索一些,但它太具体了,我对 python 的正则表达式完全陌生。我可以知道如何删除符号 @ 之后的整个字符串,直到下一个空格?虽然这是我做的,但没有运气

s = re.sub('@[^\s]+', '',s)
4

4 回答 4

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评论)。

于 2013-01-29T11:16:06.553 回答
1

我认为这对您不起作用,因为您也删除了“@”。

我删除符号@之后的整个字符串,直到下一个空格

试试这个:

In [1]: s='foo@barxyz trash trash'

In [2]: import re

In [3]: re.sub('(?<=@)[^\s]+','',s)
Out[3]: 'foo@ trash trash'
于 2013-01-29T11:25:03.563 回答
0

根据您提供的输入和上下文。

re.sub('@\S* ','',string)

见这里http://codepad.org/8KmXy7aW

于 2013-01-29T11:15:07.710 回答
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
于 2013-01-29T11:24:04.273 回答