Я новичок в RegEx. Мне нужно точно соответствовать заданному значению, которое будет использоваться в локации ограждения. (проблемы указаны в самой нижней части потока). Я буду использовать это на javascript и, возможно, на python. Вот форматы, которые я должен разрешить:
[[1.32, 42.14],[1.32, 42.124]]
// 2d массив только с 2 плавающими значениями в каждом 1d массивах
[[[1.32, 42.14],[1.32, 42.124]],[[1.32, 42.14],[1.32, 42.124]]]
// массив массива 2d выше # 1
[[[[1.32, 42.14],[1.32, 42.124]],[[1.32, 42.14],[1.32, 42.124]]],[[[1.32, 42.14],[1.32, 42.124]],[[1.32, 42.14],[1.32, 42.124]]]]
// массив массива выше. # 2
Мне удалось создать следующие выражения:
test 1 - Тест для массива с плавающей точкой только с двумя значениями внутри: например, [1.23,42.124]
RegEx:
(\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<!,)\])
тест 2 - тест для массивов тест 1 : например, [[1.23,42.124],[1.23,42.124]]
RegEx:
(\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])
тест 3 - тест для массива тест 2 : например, [[[1.23,42.124],[1.23,42.124]],[[1.23,42.124],[1.23,42.124]]]
RegEx:
(\[((\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])[,]?)+(?<![,])\])
тест 4 - тест для массива тест 3 : например, [[[[1.23,42.124],[1.23,42.124]],[[1.23,42.124],[1.23,42.124]]],[[[1.23,42.124],[1.23,42.124]],[[1.23,42.124],[1.23,42.124]]]]
RegEx:
(\[(((\[((\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])[,]?)+(?<![,])\])[,]?)+)(?<![,])\])
Итак, я завершил выражение , объединив test 2 для проверки 4 вместе в |
(или):
Complete Regex:
/(\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])|(\[((\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])[,]?)+(?<![,])\])|(\[(((\[((\[(((\[((([0-9]*)[.])?[0-9]+[,]?){2}(?<![,])\])[,]?)+)(?<![,])\])[,]?)+(?<![,])\])[,]?)+)(?<![,])\])/g
Эти мои текущие проблемы с этим выражением :
не принимает пробелы между значениями массива. например, принимает [1.32,42.124]
, но [1.32, 42.124]
является ошибочным.
Мне не удается сопоставить его, если у него есть запятая на последнем значении [[1.32,42.124],[1.32,42.124],]
. Но он принимает последующие значения без запятых, например, [[1.32,42.124][1.32,42.124]]
.
Последнее, он не принимает типичный многострочный формат json.
Мне нужно принимать пробелы между значениями массива и не принимать последующие значения без запятых.