0

我正在尝试从字符串中匹配矩阵(例如)sin([[1,2][3,4]]),但我无法终生找出一个有效的正则表达式。我尝试过类似\[[0-9\.,\[\]]*\]但没有奏效的东西。我正在使用 Java(在 Android 上)。

任何人都可以帮助我吗?这是阻止进行大型 git 提交的最后一件事。

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

解决方案:原因\[.+\]不起作用是因为 Java 的 String.matches 没有像我想象的那样工作,并且因为我将它与另一个正则表达式结合使用(它本身工作正常)。显然?|在正则表达式中意味着什么。

4

2 回答 2

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

正则表达式可视化

在 Debuggex 上实时编辑

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

于 2013-09-13T23:13:13.210 回答
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 格式的数据,以确保提供的值正确格式化为向量或向量列表(矩阵)。

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

于 2019-02-06T06:44:48.107 回答