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 に答える