gpt4 book ai didi

javascript - 将纯文本解析为js数组——给第二个元素添加分隔符

转载 作者:行者123 更新时间:2023-11-30 21:00:35 24 4
gpt4 key购买 nike

我正在寻找如何将纯文本解析为 js 数组的解决方案。我已经找到了一些我想执行此操作的方案,但有点卡住了。

部分纯文本:

2017-11-08 09:43:49,153 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}2017-11-08 09:53:02,293 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}2017-11-08 09:53:02,355 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}

预期结果

const arr = [
'2017-11-08 09:43:49,153 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}',
'2017-11-08 09:53:02,293 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}',
'2017-11-08 09:53:02,355 [INFO ] root: {\"methodId\":6,\"requestBody\":{},\"token\":\"XXXX\"}'
]

正则表达式模式:

/}\d{4}-\d{2}/

每个 block 以关闭对象“}”和开始新日期“YYYY-MM”结束。

问题

plainText.split(/}\d{4}-\d{2}/)

如果我这样拆分它,它总是“吃掉”我的分隔符。有没有办法拆分文本并将已创建的分隔符添加到拆分对中的第二个元素?然后我可以将“}”添加到第一个并从第二个中删除“}”。这是我正在考虑的解决方案,但也许您可以提出更好的建议。

最佳答案

如果 JSON 数据不包含类似日期时间的子字符串,您可以使用

s.split(/\b(?=\d{4}-\d{2}-\d{2}\s/).filter(Boolean)

或更详细(为了更安全):

s.split(/\b(?=\d{4}-\d{2}-\d{2}\s+[\d:,]+\s+\[INFO ]\s+root:)/).filter(Boolean)

参见 regex demo

重点是匹配类似日期时间的字符串但不使用它,因此,整个模式都包含在一个积极的前瞻性 (?=...) 结构中。

较长的图案细节

  • \b - 单词边界
  • (?= - 正先行模式的开始
    • \d{4}-\d{2}-\d{2} - 类似日期的字符串(4 位-2 位-2 位)
    • \s+ - 1 个或多个空格
    • [\d:,]+ - 1 个或多个数字,: 或/和 ,
    • \s+ - 1 个或多个空格
    • \[INFO ] - [INFO ] 子串
    • \s+ - 1+ 个空格
    • root: - root: 子串
  • ) - 前瞻结束

关于javascript - 将纯文本解析为js数组——给第二个元素添加分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47176383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com