#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?P<id>\d+)_(?<version>v\d+)_(?P<description>\S+)_(?P<quality>(?i)Q4A|Q6A|Q8C|QXB).(?<extension>(?i)mp4|webm)"
Local $sString = "# matches" & @CRLF & _
"00001_v1234_this-iS-a-1234-description_qxb.mp4" & @CRLF & _
"12345_v1234_this-iS-a-1234-Description_qxb.weBm" & @CRLF & _
"" & @CRLF & _
"12345_v2_this-is-a-description_Q4a.mp4" & @CRLF & _
"12345_v2_this-is-a-description_q6A.mp4" & @CRLF & _
"12345_v2_this-is-a-description_Q8C.mp4" & @CRLF & _
"12345_v2_this-is-a-description_qxb.mp4" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"# no matches" & @CRLF & _
"12-34_v2_this-is-a-description_Q8C.mp4" & @CRLF & _
"12345_v2_this-is-a-description_Q8C.mp3" & @CRLF & _
"12345_v2.0_this-is-a-description_qxb.mp4" & @CRLF & _
"12345_v2_this-is-a-description_qxA.mp4" & @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