【问题标题】:Regular expression - specific text inside brackets正则表达式 - 括号内的特定文本
【发布时间】:2021-03-19 08:44:48
【问题描述】:

我正在编写一个执行抓取的 node.js 应用程序。 我需要从一个字符串中选择:

[
  [17,"EUR",17.03,"False",""],
  [20,"EUR",20.04,"False",""],
  [23,"EUR",23.05,"False",""]
],
[
  [1500,"RUB",1524.2,"False",""],
  [1800,"RUB",1793.9,"False",""],
  [2100,"RUB",2062.99,"False",""]
]

只有 [..."EUR"...] 数组,但我对正则表达式感到困惑。

试过\[(\\bEUR)?\] 和类似的。 我应该如何纠正它?谢谢

UPD:更具体的 - 返回

[20,"EUR",20.04,"False",""]

不是

[2100,"RUB",2062.99,"False",""]

还有很多令人困惑的[]括号

【问题讨论】:

  • 如果是数组,为什么不使用filterfind这样的数组函数呢?
  • 好的。但是过滤功能无论如何都需要一个模式

标签: javascript node.js arrays regex


【解决方案1】:

我宁愿使用Array.filter 而不是使用正则表达式。仅使用它会更直接、更容易理解。

编辑:由于货币被分组在一起,您可以只检查第一个数组:

Array.filter(x => x[0].includes("EUR"));

【讨论】:

  • 好主意。但它削减了数组内部的所有内容。我只需要用 EUR 留下数组(见上文)
  • @IliaSoloveychik 是所有货币组合在一起的吗?如果是这种情况,您可以只检查第一个数组 - Array.filter(x => x[0].includes("EUR")); - 然后在需要时解构返回数组
【解决方案2】:

您可以使用filtersome

const bla = [
  [17, "EUR", 17.03, "False", ""],
  [20, "EUR", 20.04, "False", ""],
  [23, "EUR", 23.05, "False", ""],
  [1500, "RUB", 1524.2, "False", ""],
  [1800, "RUB", 1793.9, "False", ""],
  [2100, "RUB", 2062.99, "False", ""],
];

const out = bla.filter(el => el.some(nEl => nEl === 'EUR'));
console.log(out);

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多