Отделить id от url

В регулярках вообще не соображаю даже самое элементарное не могу сделать.Помогите отделить id от url есть список с адресами страниц где id могут быть либо цифры либо никнеймы.

["https://vk.com/phrodionov" , "https://vk.com/id4308" ,  "https://vk.com/id4924"]

Ответы (1 шт):

Автор решения: DiMithras

Действительно непонятно зачем тут регулярка, но если хочется регулярку, то вот:
(?<=vk\.com\/).*

  • .* — забираем любые символы, т.е. id'шники с цифрами и текстовые.
    Можно использовать .+ quantifier, тогда ссылки без id, т.е. просто "vk.com/" в результат не пойдут
  • (?<=vk\.com\/) — positive lookbehind, т.е. регулярка сработает только если перед тем что мы хотим найти стоит "vk.com/"
  • \. и \/ — в ссылку vk.com/ необходимо добавить escape character, т.е. обратный слеш, т.к. точка и прямой слеш являются частью синтаксиса регулярных выражений

Update

Из комментариев:

Она все ровно выдает с id

pattern=r'(?<=vk\.com\/)((?:id)(\d+)|.*)'
arr = ["https://vk.com/phrodionov" , "https://vk.com/id4308" ,  "https://vk.com/id4924"]
for x in arr:
    print([x for x in re.search(pattern, x).groups() if x != None][-1])
Вывод:
phrodionov
4308
4924
→ Ссылка