对于这样的输入,简单但有效的括号检查器?
{(1,2),(3,4)};
我怎样才能检查像上面这样的输入是两对的集合(在“{”和“}”之间)(“(”和“)”之间的整数值。如上所述,必须使用三个逗号。我的猜测也许在字符数组上进行某种搜索(不知道是哪一种)来找到正确的符号是最好的,但是有没有更快的方法?
请记住,整数值可能比 1、2、3 等大得多,和消极的。
{(1,2),(3,4)};
How can I check that an input like the above is a set (between '{' and '}') of two pairs (integer values between '(' and ')'. Three commas, as above, must be used. My guess is that maybe some kind of search (don't know which) on a character array for the correct symbols would be best but is there any faster way?
Bear in mind that integer values could be much huger than 1, 2, 3 etc, and negative.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果这不是性能关键,您可以使用快速但肮脏的正则表达式。
-?\d+
匹配任意长度的数字序列(即 1 个或多个数字),前面可以选择负号 大括号{ }
和圆括号( )< /code> 是正则表达式中的特殊字符,因此必须对它们进行转义(
\{
等)。\s*
(零个或多个空白字符)。最终的正则表达式应如下所示:
\{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}
如果您还需要捕获任何数字值,您可以添加捕获括号。
If this is not performance critical, you can use a quick and dirty regex.
-?\d+
matches a digit sequence of any length (i.e. 1 or more digits), optionally preceded by a negative sign{ }
and parentheses( )
are special characters in a regex, so they must be escaped (\{
, etc.)\s*
(zero or more whitespace characters) in any place where it is allowed.The final regex should be as follows:
\{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}
If you also need to capture any of the digit values, you can add capturing parentheses.