【发布时间】:2021-08-26 00:21:42
【问题描述】:
我正在尝试在 json 文件中匹配此重复模式:
{
"date":1568381400,
"open":301.7799987792969,
"high":302.1700134277344,
"low":300.67999267578125,
"close":301.0899963378906,
"volume":61426700,
"adjclose":301.0899963378906
}
注意:以上为格式化版本。实际的 json 全部为一行(删除了可选的空格)。
有一堆用逗号分隔,没有空格。我使用以下代码:
while ( $Page =~ /{"date":(.+?),.+?"high":(.+?),"low":(.+?),"close":(.+?),"volume":(.+?),.+?"adjclose":(.+?)}/g )
正则表达式为每个此类调用返回两个模式示例。例如 $& 返回:
at84: matched:{"date":1623182400,"open":91.48999786376953,"high":92.379997253417
97,"low":90.77999877929688,"close":92,"volume":15404,"adjclose":92},{"date":1623072600,"open":89.80999755859375,"high":91.3499984741211,"low":89.80999755859375,"close":90.75,"volume":36200,"adjclose":90.75}
它永远不会匹配多于或少于精确的 2 个模式。
我尝试添加一个“?”在模式的末尾,什么都不做。
我想我可以更改循环以索引逗号或 {} 块,但这会增加一层我想避免的混乱。
大家有什么建议吗?
【问题讨论】:
-
您在示例输入中是否缺少
date之前的引号字符?还有其他错误吗?
标签: regex perl string-matching