Regex для многомерного массива с плавающей точкой. Совпадение пробела или пробела после каждого значения массива - PullRequest
0 голосов
/ 24 января 2020

Я новичок в RegEx. Мне нужно точно соответствовать заданному значению, которое будет использоваться в локации ограждения. (проблемы указаны в самой нижней части потока). Я буду использовать это на javascript и, возможно, на python. Вот форматы, которые я должен разрешить:

  1. [[1.32, 42.14],[1.32, 42.124]] // 2d массив только с 2 плавающими значениями в каждом 1d массивах

  2. [[[1.32, 42.14],[1.32, 42.124]],[[1.32, 42.14],[1.32, 42.124]]] // массив массива 2d выше # 1

  3. [[[[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. не принимает пробелы между значениями массива. например, принимает [1.32,42.124], но [1.32, 42.124] является ошибочным.

  2. Мне не удается сопоставить его, если у него есть запятая на последнем значении [[1.32,42.124],[1.32,42.124],]. Но он принимает последующие значения без запятых, например, [[1.32,42.124][1.32,42.124]].

  3. Последнее, он не принимает типичный многострочный формат json.

Мне нужно принимать пробелы между значениями массива и не принимать последующие значения без запятых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...