Как извлечь часть пути URL в регулярном выражении

В моем URL-адресе это может выглядеть так:

protocol://server/path1/path2/path3/pathn/key/id1234567890?Create

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

protocol\:\/\/[^/]+(\/[^ \t\n\r]+)

Это регулярное выражение нужно расширить и дать мне возможность получить значение идентификатора. Буду очень рад помощи :) Спасибо!


person user3017641    schedule 13.05.2020    source источник


Ответы (2)


Следующее может сработать.

key/(id\d+)\?

Примените это для извлеченных URL-адресов. Просто, но должно работать :)

Изменить: Или, может быть, вы можете применить это напрямую.

person Dum    schedule 13.05.2020

Например, вы можете сопоставить все косые черты до последней, а затем захватить более 1 символа слова в группе 1.

protocol://[^/\r\n]+(?:\/[^\r\n/]+)*/(\w+)

Пояснение

  • protocol:// Соответствовать буквально
  • [^/\r\n]+ Соответствует 1+ любому символу, кроме / или новой строки
  • (?:\/[^\r\n/]+)* Повторите 0+ раз, совпадая с /, за которым следует 1+ раз любой символ, кроме / или новой строки
  • / Совпадение с последним /
  • (\w+) Захватите группу 1, сопоставьте более 1 символа слова

демонстрация регулярных выражений

person The fourth bird    schedule 13.05.2020