java - 对于这样的输入,简单但有效的括号检查器?

标签 java brackets character-arrays

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

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

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

最佳答案

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

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

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

如果您还需要捕获任何数字值,可以添加 capturing parentheses .

关于java - 对于这样的输入,简单但有效的括号检查器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253084/

相关文章:

java - 使用静态配置类是好的做法吗?

java - 使用 jersey 在 JAX-RS 中设置 @RolesAllowed 的角色

c++ - 创建一个可以接收 board1[{1,1}] ='X' 的类; ? (方括号内的大括号)

haskell - 为什么冒号在这个表达式中是右结合的?

C++ 重载映射 [ ] 运算符

c - 如何将 scanf 中的获取名称放入数组中?

java - Hibernate Session 方法 saveOrUpdate() 和 merge() 之间有什么区别?

java - super.paintComponent(g) 是做什么的?

c - 如何从 C 字符串中删除 'garbage input'?

c - 将 0x00 分配给 C 中的数组?