Найти подстроку URL-адреса с помощью регулярного выражения - PullRequest
0 голосов
/ 05 августа 2020

Я хотел бы получить предложения по извлечению подстроки из диапазона URL-адресов. Код, который я пишу, должен извлекать эту часть информации (фактический идентификатор URL-адреса) из URL-адресов во входящих событиях от нашего веб-трекера.

Возьмите эти URL-адреса (URL-адреса, которые содержат подстроки, которые я ищу for находится в формате первых трех)

https://www.rbnett.no/sport/i/LA8gxP/_
https://www.itromso.no/sport/sprek/i/GGobq6/derfor-vraker-tromsoes-beste-loeper-sesongens-eneste-konkurranse-det-er-for-risikabelt-aa-delta
https://www.adressa.no/sport/fotball/i/9vyQGW/brann-treneren-ferdig-avsluttet-pressekonferansen-med-aa-sitere-max-manus
https://www.rbnett.no/dakapo/banner/
https://www.adressa.no/search/

, где я хочу извлечь подстроки «LA8gxP», «GGobq6» и «9vyQGW» из трех предыдущих URL-адресов соответственно, не нажимая «dakapo», «баннер» или «поиск» из двух последних.

Я прошу предложений по регулярному выражению для извлечения этой информации. Насколько мне известно, подстроки содержат только буквы az, AZ и 0-9. Подстроки кажутся длиной всего 6 символов, но со временем это, вероятно, изменится.

Лучшее решение (с использованием Python), которое я нашел до сих пор, это:

match = re.search(r"/i/([a-zA-Z0-9]+)/", url)
substring = match.group(1)

Это работает, но я не считаю его очень элегантным.

Кроме того, он полагается на наличие / i / -pattern в качестве префикса. Несмотря на то, что это похоже на закономерность, я не уверен на 100%, так ли это.

1 Ответ

1 голос
/ 05 августа 2020

Единственная альтернатива, которую я могу придумать: \/i\/(.+)\/

Вот демонстрация: https://regex101.com/r/2iOyCE/1

...