Dada una lista de URL, ¿cómo puedo dividirla en 3 listas de suma?
uno para videos de YT, segundo para canales de YT, tercero para todos los demás?
const paragraph1 = 'www.youtube.com/watch?v=NsjeEt1ZpqQ'; const regex1 = /www.youtube.com/(\c*)(watch?v=)?<videoId>[AZ,0-9])/gi; const paragraph2 = 'https://www.youtube.com/channel/UCKqFqiCe1dCUxRe0_YNZ6gg'; const regex2 = /www.youtube.com/channel/?<channelId>[AZ,_,0-9])/gi; const found = paragraph1.match(regex1); console.log(found); // expected output: Array ["T", "I"] const found = paragraph2.match(regex2); console.log(found);Traté de sandbox en este sitio .
Dado que planea dividir una lista de cadenas de URL en tres partes diferentes, puede usar tres patrones diferentes:
www\.youtube\.com\/watch\?v=(?<videoId>\S+) www\.youtube\.com\/channel\/(?<videoId>\S+) www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*Vea demostraciones de regex #1 , regex #2 y regex #3 . Tenga en cuenta que necesita un entorno de JavaScript compatible con ECMAScript 2018+ para que funcionen los grupos de captura con nombre. Además, vea que los puntos se escapan en todas partes donde indican puntos literales.
Los patrones significan
www\.youtube\.com\/watch\?v= - una cadena literal www.youtube.com/watch?v=(?<videoId>\S+) - Grupo "videoId": uno o más caracteres que no sean espacios en blancowww\.youtube\.com\/channel\/(?<videoId>\S+) - una cadena literal www.youtube.com/channel/ y luego Group "videoId" capturando uno o más caracteres que no sean espacios en blancowww\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S* - cadena de www.youtube.com y luego una búsqueda anticipada negativa que falla la coincidencia si, inmediatamente al correcto, hay un / char, luego channel/ o watch?v= , y luego se consumen cero o más caracteres que no son espacios en blanco. Si planea usar los patrones contra algún texto de marcado, asegúrese de restar los caracteres de marcado del patrón \S , es decir, cámbielo a una clase de carácter negado con una abreviatura inversa, [^\s] , y agregue los caracteres después de \s . Digamos, si los enlaces están entre comillas dobles, ponga " allí, [^\s"] .