2017-10-17 9 views
0

私はこのような文字列を持っています: "今日、私はMSFT100 @ 50を売ってから寝ました!"記号に基づいて単語をキャプチャします

私は3つの文字列を解析し、それらを変数にしたいと思っています。私が使用している場合ので、販売を解析するために100、50

たい(購入|販売)。*(\ D +)、@(\ D +)(\ D +)最初、私は100を返すようにしたい場合は、0を返します。 。

+1

を役に立てば幸い?もっと説明してください。 – Maroun

答えて

1

私は今、あなたの編集に基づいて理解:

(bought|sold).*?(\d+)@(\d+) 

ここにトリックはあなたの例では、「それ以降にマッチしただけで一桁を残して、できるだけ多くの文字を、一致する、ということです「*。」 \ d + "となります。 '?'を追加するそれは不公平になるので、可能な限り少ない文字数に一致します。

+0

'\ w + @ \ d +'は、より厳密な一致をOPに提供するかもしれませんが、当然ここで推測しているだけです –

+0

@jayteaまた '\ w + @ \ w +'から '\ w * @ w * OPに「MSFT @」または「@ 50」のみがある場合に失敗する – coder

+0

文字列が「今日はMSFT 100 @ 50を売ってから就寝した!私は正規表現を使用して "0 @ 50"をピックアップしています。 – A1122

0

テキストは、あなたが以下のように使用することができ、「50 @ MSFT」のような一致するであろう場合:

import re 
re.findall(r'[A-Za-z][email protected][0-9]+', <your srting here>) 

が、それはパターン何

関連する問題