正则表达式 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?
正则表达式模式尝试:
我尝试了以下模式,但它们要么捕获所有内容,要么一无所获:
- Matches every float value in all groups:
([+-]*\d+\.\d+),
- 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。粘贴您的示例文本,您可以调整正则表达式并查看它的实时更新。将鼠标悬停在表达式上,它会为您提供每个部分的详细信息。
匹配括号之间的分组多行浮点值
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?
正则表达式模式尝试:
我尝试了以下模式,但它们要么捕获所有内容,要么一无所获:
- Matches every float value in all groups:
([+-]*\d+\.\d+),
- 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。粘贴您的示例文本,您可以调整正则表达式并查看它的实时更新。将鼠标悬停在表达式上,它会为您提供每个部分的详细信息。