我想获取等号后面出现的所有文本/数字,以便此输入
"Input: m = 2, n = 3, indices = [[0,1],[1,1]]"
将返回以下输出:
[2,3, [[0,1],[1,1]] ]
这就是我所尝试的:
eachEx.match(/= (.+)/)[1]
然而,这会传回:
2, n = 3, indices = [[0,1],[1,1]]
我曾想过拆分字符串并遍历每个元素,然后将其传递给匹配项。然而,问题是,我将无法知道所讨论的元素是字符串、整数还是数组。我需要知道这些信息
1条答案
按热度按时间huwehgph1#
如果你最终需要为此编写一个简单的解析器,而不是一个正则表达式,我不会感到惊讶。但是给出的具体例子 * 可以 * 用一个正则表达式完成。只是我怀疑当你抛出更多的例子时,它会变得太复杂。
如果使
,
成为2
和3
之后的分隔符而不是最终匹配中的分隔符的原因是最终匹配被 Package 在[___]
中,则可以使用交替来调整捕获中允许的字符:也就是说,如果文本以
[
开头,以]
结尾,则匹配其中所有非=
的内容,否则匹配所有非=
和非,
的内容。然后,为了获得所有匹配项,添加一个
g
标志并使用matchAll
,然后对从中获得的可迭代对象进行后处理以提取捕获组:作为一个字符串解析错误的例子,考虑
"a = [3, [2, ], b = 3"
,它给出了数组[ "[3, [2, ]", "3" ]
,而它可能是一个错误:因此,上面的警告提示您可能需要编写一个简单的解析器。