#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)\b(?<url>(https?:.//?|www\.).*?)(?:</ref>|[,]|[\]]|[ ]|[ ]|[<])"
Local $sString = "<ref>Melon busk + shorten domain https://www.youtube.com/watch?v=2j3p_aDMTNg</ref> => Valid" & @CRLF & _
"" & @CRLF & _
"<ref>vidéo privé https://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub</ref> => Invalid - privé" & @CRLF & _
"" & @CRLF & _
"<ref>rick roll [https://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_playe http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_playe]</ref> => Valid " & @CRLF & _
"" & @CRLF & _
"<ref>ajout source redirect home page - https://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player</ref> => Valid" & @CRLF & _
"" & @CRLF & _
"<ref>rick roll avec share https://youtube.com/shorts/dQw4w9WgXcQ?feature=share'</ref> => Valid" & @CRLF & _
"" & @CRLF & _
"<ref>Video indisponible (pas TOS, pas privé) - https://www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0%2C</ref> => Invalid" & @CRLF & _
"" & @CRLF & _
"<ref>lien de chaine https://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo</ref> => Valid - lien de chaine" & @CRLF & _
"" & @CRLF & _
"<ref>chaine indisponnible [https://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I]</ref> => Invalid" & @CRLF & _
"" & @CRLF & _
"<ref>video indisponnible https://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub</ref> => Invalid" & @CRLF & _
"" & @CRLF & _
"<ref>Embedded video https://www.youtube.com/embed/nas1rJpm7wY?rel=0</ref> => Valid" & @CRLF & _
"" & @CRLF & _
"<ref> Multiple url reference [https://www.youtube.com/watch?v=ubNF9QNEQLA, https://www.youtube.com/watch?v=ubNF9QNEQLA]</ref> => Semi-valid - Multiple reference" & @CRLF & _
"" & @CRLF & _
"<ref> nowiki referefence <nowiki>https://www.youtube.com/watch?v=ubNF9QNEQLA</nowiki></ref> => Semivalid - nowiki tag" & @CRLF & _
"" & @CRLF & _
"<ref>playlist avec plusieurs videos https://www.youtube.com/playlist?list=PLUTbk4P4tNYQ99rLpgq9eKAjZpiQh7Ay4</ref> => valid - playlist" & @CRLF & _
"" & @CRLF & _
"<ref>https://www.youtube.com/playlist?list=PLUTbk4P4tNYQ99rLpgq9eKAjZpiQh7Ay4</ref> => valid sans metadata" & @CRLF & _
"" & @CRLF & _
"<ref>https://www.youtube.com/playlist?list=PLUTbk4P4tNYQ99rLpgq9eKAjZpiQh7Ay4 - https://www.youtube.com/playlist?list=PLUTbk4P4tNYQ99rLpgq9eKAjZpiQh7Ay4</ref> => multiple links" & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm