gpt4 book ai didi

javascript - 正则表达式在javascript中获取字符串的多个段

转载 作者:行者123 更新时间:2023-11-29 18:20:03 24 4
gpt4 key购买 nike

我正在尝试从下载管理器中提取一些结果,格式为:

[#8760e4 4.3MiB/40MiB(10%) CN:2 DL:4.9MiB ETA:7s]

我想从上面的示例中提取的是一个如下所示的数组:

['4.3','MiB','40','MiB','10%','4.9','MiB','7','s']

我试过以各种组合拆分它,但似乎没有什么是对的。有没有人碰巧知道如何执行此操作或能够提供建议?

谢谢!

最佳答案

你可以做到

var arr = str.match(/ ([\d\.]+)(\w+)\/([\d\.]+)(\w+)\(([^\)]+)\).*:([\d\.]+)(\w+).*:([\d\.]+)(\w+)/).slice(1)

用你的字符串,它给出

["4.3", "MiB", "40", "MiB", "10%", "4.9", "MiB", "7", "s"]

但这实际上取决于可能的字符串。仅举一个例子是不可能确定的。我的建议是

  1. 确保你理解我的正则表达式(逐步阅读)
  2. 根据您所在领域的知识进行测试和调整

这里有一个解释:在括号之间,你有捕获组,这就是我们在数组中得到的。以下是其中一些:

  • ([\d\.]+) :该组由数字和点组成(如果要确保最多有一个点,请使用 (\d+\.?\d*))
  • (\w+) : 一些字母
  • ([^\)]+) : 一些不是右括号的字符

请注意,如果它变得太复杂或结构太深,那么正则表达式将不是正确的解决方案,您将不得不使用解析逻辑。


编辑

根据您的意见,帮助您处理更复杂的字符串。

假设你使用这个正则表达式:

/ ([\d\.]+)(\w+)\/([\d\.]+)(\w+)\(([^\)]+)\).*:([\d\.]+)(\w+) ETA:(\d+h)?(\d+m)?(\d+s)?/

然后

"[#8760e4 4.3MiB/40MiB(10%) CN:2 DL:4.9MiB ETA:1h30m7s]"

会给

["4.3", "MiB", "40", "MiB", "10%", "4.9", "MiB", "1h", "30m", "7s"]

"[#8760e4 4.3MiB/40MiB(10%) CN:2 DL:4.9MiB ETA:7s]"

会给

["4.3", "MiB", "40", "MiB", "10%", "4.9", "MiB", undefined, undefined, "7s"]

我更改了正则表达式的末尾。像 (\d+h)? 这样的组表示“一些数字后跟 h,可选”。

关于javascript - 正则表达式在javascript中获取字符串的多个段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570239/

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