使用Python在字符串中的字符前提取数字

Hel*_*ene 4 python regex string

我试图在一系列字符串中提取字符"M"之前的数字.字符串可能如下所示:

"107S33M15H"
"33M100S"
"12M100H33M"
Run Code Online (Sandbox Code Playgroud)

所以基本上会有一组由不同字符分隔的数字,而"M"可能会出现不止一次.对于此处的示例,我希望我的代码返回:

33
33
12,33 #doesn't matter what deliminator to use here
Run Code Online (Sandbox Code Playgroud)

我能想到的一种方法是将字符串拆分为"M",并查找纯数字的项目,但我怀疑有更好的方法可以做到这一点.非常感谢您的帮助.

Wik*_*żew 14

您可以使用简单的(\d+)M正则表达式(1位数字后跟M数字被捕获到捕获组的位置)re.findall.

请参阅IDEONE演示:

import re
s = "107S33M15H\n33M100S\n12M100H33M"
print(re.findall(r"(\d+)M", s))
Run Code Online (Sandbox Code Playgroud)

这是一个正则表达式演示