我有以下正则表达式,可以读取任意大小的数组,例如 {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}} 等?
最佳答案
我认为您只需要添加外部大括号并使用可选逗号重复现有模式: 字首: {(。 外部花括号和左括号,以便可以重复现有的正则表达式。
"\\{\\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*)?\\},?)+\\}"
关于java - 如何修改读取 vector 的正则表达式来读取矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545817/