在字符串列表 (Python) 的每一项中查找特定模式(正则表达式)

Find a specific pattern (regular expression) in each item of list of strings (Python)

来自这个列表problems= ["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]

我想得到这些数字 "\d*\s" 这意味着 32,3801,45,123

有没有一种方法可以查看列表中的每一项并通过列表理解进行搜索?

我只有这个尝试 print([x for x in problems if re.search(r'\d*\s',x)]),但是如果 "\d*\s" 存在,它会打印整个项目,所以我又得到了 ["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]

(我的目标是每个项目的长度较长,即 3,4,2,3)

您需要提取字符串中 space 之前的第一部分。这可以使用组捕获来完成。这是您可以使用的代码:

[re.search('(\d+)\s', x).group(1) for x in problems if re.search(r'(\d)*\s',x)]

此处 (\d+)\s 匹配白色 space 字符前的一个或多个数字,我们使用 group(1) 方法提取第一组。