在下面的示例数据中,我想提取之间的所有浮点值 括号仅属于" group1"使用正则表达式,但不是值 来自其他团体(" group2"," group3"等)。一个要求是它是通过python中的regex完成的。这是 可以使用正则表达式吗?
我尝试了以下模式,但它们捕获了所有内容:
- 匹配所有组中的每个浮点值:
([+-]*\d+\.\d+),
- 在任何群组中均不匹配任何内容:
醇>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,
]
答案 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/
这是迄今为止我发现的用于创建正则表达式的最佳资源。它有很好的例子,参考和备忘单。粘贴您的示例文本,您可以调整正则表达式并实时更新它。将鼠标悬停在表达式上,它会为您提供每个部分的详细信息。