首页 > 解决方案 > 如何修改读取向量以读取矩阵的正则表达式?

问题描述

我有以下正则表达式可以读取任何大小的数组,例如 {1.0, 2, 3, 5.4}:

"\\{\\s*((-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+(\\s*,\\s*(-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+)*\\s*)?\\}"

我怎样才能修改它,使它可以读取任何维度的矩阵,例如:{{1.2, 3,4},{2,3.4,3}} 等?

标签: javaregexmatrixvectortoken

解决方案


我认为您只需要添加外大括号并使用可选的逗号重复现有模式:前缀:{(。外大括号和左括号,以便可以重复现有的正则表达式。

"\\{\\s*((-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+(\\s*,\\s*(-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+)*\\s*)?\\}"

附加:,?)+}。逗号 - 问号使其可选,然后关闭括号并允许它重复 1 次或多次,最后是结束的外花括号

将它们放在一起并添加所需的转义以获得:

"\\{(\\{\\s*((-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+(\\s*,\\s*(-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b)+)*\\s*)?\\},?)+\\}"

推荐阅读