0
{(1,2),(3,4)};

如何检查像上面这样的输入是两对的集合(在'{'和'}'之间)('('和')'之间的整数值。必须使用如上所述的三个逗号。我的猜测对正确符号的字符数组进行某种搜索(不知道是哪种)可能是最好的,但有没有更快的方法?

请记住,整数值可能比 1、2、3 等大得多,并且是负数。

4

1 回答 1

2

如果这不是性能关键,您可以使用快速而肮脏的正则表达式。

  • -?\d+匹配任意长度的数字序列(即 1 个或多个数字),可选地以负号开头
  • 大括号{ }和圆括号( )是正则表达式中的特殊字符,因此它们必须被转义 (\{等)
  • 我的假设是不允许有空格。如果这不是真的,您将需要修改正则表达式以\s*在任何允许的地方包含可选的空格(零个或多个空格字符)。

最终的正则表达式应如下所示: \{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}

如果您还需要捕获任何数字值,则可以添加捕获括号

于 2012-02-12T22:02:12.723 回答