私はいくつかグーグルしようとしましたが、それはあまりにも具体的であり、私は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