正则表达式以匹配多组括号之间的所有内容

时间:2019-09-19 18:54:07

标签: regex brackets alteryx

我正在尝试匹配多组括号之间的所有内容

数据示例

[[42.30722,-83.181125],[42.30722,-83.18112667],[42.30722167,-83.18112667,[42.30721667,-83.181125],[+42.30721667,-83.181125]]

我需要匹配内括号内的所有内容

42.30722,-83.181125,
42.30722,-83.18112667,
42.30722167,-83.18112667,
42.30721667,-83.181125,
+42.30721667,-83.181125

我该怎么做。我尝试了\[([^\[\]]|)*\],但它给了我方括号内的值。有人可以帮我吗预先感谢

2 个答案:

答案 0 :(得分:0)

似乎其中一个缺少括号,或者如果没有,可能类似于以下表达式:

\[([+-]?\d+\.\d+)\s*,\s*([+-]?\d+\.\d+)\s*\]?

开始可能没问题。

测试

import re

expression = r"\[([+-]?\d+\.\d+)\s*,\s*([+-]?\d+\.\d+)\s*\]?"
string = """
[[42.30722,-83.181125],[42.30722,-83.18112667],[42.30722167,-83.18112667,[42.30721667,-83.181125],[+42.30721667,-83.181125]]
"""

print([list(i) for i in re.findall(expression, string)])
print(re.findall(expression, string))

输出

[['42.30722', '-83.181125'], ['42.30722', '-83.18112667'], ['42.30722167', '-83.18112667'], ['42.30721667', '-83.181125'], ['+42.30721667', '-83.181125']]
[('42.30722', '-83.181125'), ('42.30722', '-83.18112667'), ('42.30722167', '-83.18112667'), ('42.30721667', '-83.181125'), ('+42.30721667', '-83.181125')]

如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。


答案 1 :(得分:0)

有点晚了,但是我想无论如何我都会把它包括在内。

您的第三组缺少'''。

如果在那里,那么在Alteryx中,您可以使用“文本到列”拆分为行,而忽略括号中的定界符