我正在尝试从网页获取链接,但是同一链接可能多次出现。
因为我对获取所有链接感兴趣,所以我使用match()
函数,该函数两次(或多次,取决于页面上有多少个相同的链接)返回相同的链接。
示例:
const results = [
'http://example1.com','http://example1.com', 'http://example2.com','http://example2.com',
];
一种解决方案是将匹配数组传递给Set()
。
const expected = [... new Set(results)];
expected // ["http://example1.com", "http://example2.com"]
是否有另一种无需使用Set()
(最好仍使用正则表达式)来获得预期结果的方法?
所以主要的问题不是从数组中删除重复项,而是从正则表达式中获得不同的值。
在此示例之后,结果由4个项目组成的数组,即2个重复项。
预期结果将是 distinct 链接的数组。在这种情况下,将包含2个项目。
答案 0 :(得分:2)
您可以尝试通过前瞻性断言仅获取最后一个匹配项:
/(https:\/\/\S+\/[a-z-0-9\?=]+-+\d+-+)(?!.*\1)/gs