正则表达式 python:匹配括号之间的多行浮点值

Regex python: match multi-line float values between brackets

匹配括号之间的分组多行浮点值

In the below example data, I want to extract all the float values between brackets belonging only to "group1" using regex, but not the values from other groups ("group2", "group3" etc.). A requirement is that it is done via regex in python. Is this possible with regex at all?


正则表达式模式尝试:

我尝试了以下模式,但它们要么捕获所有内容,要么一无所获:

  1. Matches every float value in all groups: ([+-]*\d+\.\d+),
  2. Matches no value in any groups: group1 = \[ ([+-]*\d+\.\d+), \]


我应该怎么做才能使这项工作?非常欢迎任何建议!


示例数据:

group1 = [
 1.0,
 -2.0,
 3.5,
 -0.3,
 1.7,
 4.2,
]


group2 = [
 2.0,
 1.5,
 1.8,
 -1.8,
 0.7,
 -0.3,
]


group1 = [
  0.0,
  -0.5,
  1.3,
  0.8,
  -0.4,
  0.1,
]

这是我创建的正则表达式 r'group1 = \[\n([ *-?\d\.\d,\n]+)\]':

import re

s = '''group1 = [
 1.0,
 -2.0,
 3.5,
 -0.3,
 1.7,
 4.2,
]


group2 = [
 2.0,
 1.5,
 1.8,
 -1.8,
 0.7,
 -0.3,
]


group1 = [
  0.0,
  -0.5,
  1.3,
  0.8,
  -0.4,
  0.1,
]'''

groups = re.findall(r'group1 = \[\n([ *-?\d\.\d,\n]+)\]', s)
groups = [float(f) for l in map(lambda p: p.split(','), groups) for f in l if f.strip()]
print(groups)

输出:

[1.0, -2.0, 3.5, -0.3, 1.7, 4.2, 0.0, -0.5, 1.3, 0.8, -0.4, 0.1]

试试这个:

\bgroup2 = \[([\s+\d+.\d+[,-\]]+)

这可能不是最优化的解决方案,但我使用此网站仅用了几分钟就完成了。 http://www.regexr.com/

这是迄今为止我找到的创建正则表达式的最佳资源。它有很好的示例、参考和作弊 sheet。粘贴您的示例文本,您可以调整正则表达式并查看它的实时更新。将鼠标悬停在表达式上,它会为您提供每个部分的详细信息。