Python 基于符号捕获单词

Python 基于符号捕获单词,python,regex,Python,Regex,我有一大堆这样的字符串:“今天我卖掉了MSFT100@50然后就上床睡觉了!” 所以我想解析出3个字符串,并将它们转换成变量。我想分析卖完的,100,50 因此,当我使用(买的|卖的)时,*(\d+)@(\d+)第一个(\d+)返回0,当我想返回100时。根据您的编辑,我现在了解: (bought|sold).*?(\d+)@(\d+) 这里的技巧是,在您的示例中,“.*”匹配尽可能多的字符,只留下一个数字与后面的“\d+”匹配。添加“?”将使其不可见,因此它将匹配尽可能少的字符。如果文本与M

我有一大堆这样的字符串:“今天我卖掉了MSFT100@50然后就上床睡觉了!”

所以我想解析出3个字符串,并将它们转换成变量。我想分析卖完的,100,50


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

根据您的编辑,我现在了解:

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

这里的技巧是,在您的示例中,“.*”匹配尽可能多的字符,只留下一个数字与后面的“\d+”匹配。添加“?”将使其不可见,因此它将匹配尽可能少的字符。

如果文本与MSFT@50“,则可以使用以下选项:

import re
re.findall(r'[A-Za-z]+@[0-9]+', <your srting here>)
重新导入
关于findall(r'[A-Za-z]+@[0-9]+',)

希望有帮助

有什么模式?请进一步解释。
\w+@\d+
可能会为OP提供更紧密的匹配,但我们当然只是猜测here@jaytea如果OP有
MSFT@
@50
仅当字符串为“Today I Sald MSFT”时,从
\w+
更改为
\w*@\w*
也不会失败100@50然后就上床睡觉了!”?我只是接电话“0@50“使用正则表达式。@A1122尝试使用
re.find_all(r'\w*@\w*',x)[0]
(其中x是句子)。@A1122我想你的意思是你只是在捡东西”100@50而你想要的是“MSFT”100@50". 在不太了解您正在处理的数据的性质的情况下,我们只能推测对于您的目的来说,什么是正确的表达(正如您在我的帖子上的其他评论所看到的)。我猜这些是股票市场交易,但我个人对它们的一般形式并不熟悉。