Регулярное выражение, чтобы сопоставить все между несколькими наборами скобок - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь сопоставить все в нескольких наборах скобок

Пример данных

[[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

Как мне это сделать.Я попытался \[([^\[\]]|)*\], но это дает мне значения в скобках.Кто-нибудь может помочь мне с этим.Заранее спасибо

1 Ответ

0 голосов
/ 19 сентября 2019

Похоже, что у одного из них отсутствует скобка, а если нет, то может быть какое-то выражение, похожее на:

\[([+-]?\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 .Если хотите, вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами ввода.


...