正则表达式匹配字符串形式矩阵

时间:2013-09-13 23:07:09

标签: java android regex

我正在尝试匹配字符串中的矩阵(例如)sin([[1,2][3,4]]),但我不能在我的生活中找出一个有效的正则表达式。我尝试过像\[[0-9\.,\[\]]*\]这样的东西,但都没有。我在Java(在Android上)工作。

有人能帮帮我吗?这是阻止进行大型git提交的最后一件事。

更多细节:矩阵将是任意大小,如[[1,2,3,4][5,6,7,8][9,10,1,12]]。我想要一个正则表达式,它将推出整个矩阵(不是单个部分,因为它会被函数,运算符等所包围。矩阵中的数字将是整数或双精度。科学符号也是可能的.Hex /其他基地不是。

解决方案:\[.+\]无法正常工作的原因是因为Java的String.matches没有像我想象的那样工作,而且因为我将它与另一个正则表达式结合使用(它本身运行良好) 。显然?|表示正则表达式中的内容。

2 个答案:

答案 0 :(得分:0)

\[(\d+\.?\d*),(\d+\.?\d*)\]

Regular expression visualization

Edit live on Debuggex

这样的东西?我有点困惑你想做什么。此代码从[digit,digit]之类的组中提取值,并将它们放入两个捕获组中。它还处理小数:)。

答案 1 :(得分:0)

我使用以下正则表达式来验证匹配向量(方括号内用逗号分隔的数字)或矩阵(方括号内用逗号分隔的向量)的字符串。处理负数和正数,小数点甚至指数计数法。

/(\[+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?,?)+[\]\,]+)+/g

上面的正则表达式可以匹配:

  • 向量:[0.04260090287650773,0.3618834344248428]
  • 矩阵:[[1.00,4.00,6.10],[0.04,0.36,7.0],[5.0,0.67,0.33]]

我曾经验证来自Web服务的JSON格式的数据,以确保所提供的值正确地设置为矢量或矢量列表(矩阵)。

它对我有用,我希望对任何人都有用。