2017-10-17 36 views
0

我有一堆这样的字符串:“今天我卖了MSFT 100 @ 50,然后上床睡觉!”基于符号的捕获词

所以我想解析出3个字符串并将它们变成变量。我想解析出售,100,50.

因此,当我使用(买卖|出售)。*(\ d +)@(\ d +)第一个(\ d +)返回0,当我想返回100 。

+1

有什么模式?请解释更多。 – Maroun

回答

1

我现在根据您的修改明白:

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

这里的窍门是,在你的榜样,尽可能多的字符可能,只留下由后续匹配的一个数字“匹配“*”。 \ d +”。添加'?'这使得它很不理智,所以它会匹配尽可能少的字符。

+0

'\ w + @ \ d +'可能会提供一个更紧密匹配的OP,当然我们只是猜测这里 –

+0

@jaytea同样来自'\改变W + @ \ w +'到'\ W * @ \ W *'赢“T万一OP具有'MSFT @'或'@ 50'仅 – coder

+0

如果该字符串是‘今天我卖MSFT 100 @ 50,然后就去睡觉了!’失败?我只使用正则表达式来拾取“0 @ 50”。 – A1122

0

如果文本会像“MSFT @ 50”一致的,那么你可以使用下列内容:

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

希望它可以帮助