38146-vm/test_regex_v2.py
2026-02-04 16:21:56 +00:00

30 lines
840 B
Python

import re
def get_youtube_id(url):
if not url:
return None
patterns = [
r'(?:v=|\/)([0-9A-Za-z_-]{11}).*',
r'(?:youtu\.be\/)([0-9A-Za-z_-]{11})',
r'(?:live\/)([0-9A-Za-z_-]{11})',
r'(?:embed\/)([0-9A-Za-z_-]{11})',
r'(?:shorts\/)([0-9A-Za-z_-]{11})', # Added shorts
]
for pattern in patterns:
match = re.search(pattern, url)
if match:
return match.group(1)
return None
urls = [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/dQw4w9WgXcQ",
"https://www.youtube.com/embed/dQw4w9WgXcQ",
"https://www.youtube.com/live/dQw4w9WgXcQ",
"https://www.youtube.com/shorts/dQw4w9WgXcQ",
"https://m.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be"
]
for url in urls:
print(f"{url} -> {get_youtube_id(url)}")