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

时间:2017-05-17 00:03:32

标签: python regex multiline brackets

在括号

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

在下面的示例数据中,我想提取之间的所有浮点值   括号仅属于" group1"使用正则表达式,但不是值   来自其他团体(" group2"," group3"等)。一个要求是它是通过python中的regex完成的。这是   可以使用正则表达式吗?


正则表达式模式尝试:

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

  
      
  1. 匹配所有组中的每个浮点值:([+-]*\d+\.\d+),
  2.   
  3. 在任何群组中均不匹配任何内容:group1 = \[ ([+-]*\d+\.\d+), \]
  4.   


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


示例数据:

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,
]

2 个答案:

答案 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]

答案 1 :(得分:0)

试试这个:

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

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

这是迄今为止我发现的用于创建正则表达式的最佳资源。它有很好的例子,参考和备忘单。粘贴您的示例文本,您可以调整正则表达式并实时更新它。将鼠标悬停在表达式上,它会为您提供每个部分的详细信息。