Простая, но эффективная проверка скобок для таких входов?
{(1,2),(3,4)};
Как я могу проверить, что вход, подобный приведенному выше, является набором (между '{' и '}') двух пар (целочисленные значения между '(' и ')'. Должны использоваться три запятые, как указано выше. Мое предположение Может быть, что-то вроде поиска (не знаю, какой) по массиву символов для правильных символов было бы лучше, но есть ли более быстрый способ?
Помните, что целочисленные значения могут быть намного больше, чем 1, 2, 3 и т. Д., И отрицательными.
1 ответ
Решение
Если это не критично для производительности, вы можете использовать быстрое и грязное выражение.
-?\d+
соответствует последовательности цифр любой длины (т. е. 1 или более цифр), необязательно с предшествующим отрицательным знаком- фигурные скобки
{ }
и скобки( )
являются специальными символами в регулярном выражении, поэтому они должны быть экранированы (\{
, так далее.) - Я предполагаю, что пробелы запрещены. Если это не так, вам нужно изменить регулярное выражение, чтобы включить дополнительные пробелы
\s*
(ноль или более пробельных символов) в любом месте, где это разрешено.
Окончательное регулярное выражение должно быть следующим:\{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}
Если вам также необходимо зафиксировать любое из цифровых значений, вы можете добавить вводящие скобки.