Regex: Как вернуть только одно вхождение совпадения, даже если есть несколько одинаковых вхождений? - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь получить ссылки с веб-страницы, но одна и та же ссылка может встречаться несколько раз.
Поскольку я заинтересован в получении всех ссылок, я использую функцию 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 дубликатов.

Ожидаемым результатом будет массив отдельных ссылок.В этом случае массив из 2 предметов.

1 Ответ

0 голосов
/ 26 января 2019

Вы можете попытаться получить только последнее совпадение с помощью утверждения:

/(https:\/\/\S+\/[a-z-0-9\?=]+-+\d+-+)(?!.*\1)/gs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...