gpt4 book ai didi

javascript - 从 HTML 文件输出两个特定字段的值的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-03 03:52:00 24 4
gpt4 key购买 nike

我正在从 this url 获取 HTML 。我对这两行感兴趣:

<meta name="SAC:price" content="444000">
<meta name="SAC:published" content="2020-03-28 11:06:22">

我想提取这两行的内容值。在这个例子中,我想要的输出是

[444000, 2020-03-28 11:06:22]

最简单的方法是什么?这是我到目前为止所尝试过的:

function myFunction() {
var url = "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/15597485"
var str = UrlFetchApp.fetch(url).getContentText();
let r = /ce" content="(\d{6})">|hed" content="(.*)">/g,out=[];
let arr = [...str.matchAll(r)]; //[[ce" content="444000">, 444000, null], [hed" content="2020-03-28 11:06:22">, null, 2020-03-28 11:06:22]]
for(a of arr){
a.shift();
(a[0])?out.push(a[0]):out.push(a[1]);
}
Logger.log(out); //[444000, 2020-03-28 11:06:22]
}

这似乎太麻烦了,有更好的选择吗?我不介意它是如何完成的(正则表达式或其他方式,只要我能够以最简单的方式一致地获取这两个字段的内容)

最终解决方案感谢 Wiktor Stribiżew 的贡献:

function myFunction() {
var url = "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/15597485"
var str = UrlFetchApp.fetch(url).getContentText();
let r = /(?<=ce" content=")\d{6}(?=">)|(?<=hed" content=").*(?=">)/g;
let arr = str.match(r);
Logger.log(arr); //[444000, 2020-03-28 11:06:22]
}

最佳答案

如果您想摆脱空值并只保留匹配值,请确保您只使用您想要获取的内容:

let r = /(?<=ce" content=")\d{6}(?=">)|(?<=hed" content=")[^"]*(?=">)/g;

在这里,(?<=ce" content=")(?<=hed" content=")正向后查找,与紧接前面的字符串中的位置匹配一些(这里是固定的)文本和 (?=">)是一个正向前瞻,与字符串中紧随其后的一些文本的位置相匹配。

请参阅regex demo

然后,获取结果数组所需要做的就是使用 String#match 调用正则表达式:

let arr = str.match(r);

参见more about lookarounds here .

关于javascript - 从 HTML 文件输出两个特定字段的值的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000349/

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