Простая, но эффективная проверка скобок для таких входов? - PullRequest
0 голосов
/ 13 февраля 2012
{(1,2),(3,4)};

Как проверить, что вход, подобный приведенному выше, является набором (между '{' и '}') двух пар (целочисленные значения между '(' и ')'. Три запятые, как указано выше,должен быть использован. Я думаю, что может быть лучше какой-то поиск (не знаю, какой) по массиву символов для правильных символов, но есть ли более быстрый способ?

Имейте в виду, что целочисленные значенияможет быть намного больше, чем 1, 2, 3 и т. д., и отрицательным.

1 Ответ

2 голосов
/ 13 февраля 2012

Если это не критично для производительности, вы можете использовать быстрое и грязное регулярное выражение.

  • -?\d+ соответствует последовательности цифр любой длины (т. Е. 1 или более цифр), необязательно с предшествующимотрицательный знак
  • Скобки { } и круглые скобки ( ) являются специальными символами в регулярном выражении, поэтому их необходимо экранировать (\{ и т.позволил.Если это не так, вам нужно будет изменить регулярное выражение так, чтобы оно включало необязательные пробелы \s* (ноль или более пробельных символов) в любом месте, где это разрешено.

Конечное регулярное выражение должно иметь видследующим образом: \{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}

Если вам также нужно захватить любое из цифровых значений, вы можете добавить захват скобок .

...