#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?im)(?<FULLREQUEST>^(?<HOST>(?<PROTOCOL>(?:http)?s?:?\/\/)(?<DOMAIN>[^\/]+\/)|(?<RELATIVE>(?:\.*\/?)+))(?<PATH>[^\s]+\/)?(?<FILENAME>(?:(?<NAME>[^\/\s\.\?\#]+?)?(?<EXT>\.[^\s\?\#]*)?|(?:\/[^\/\s\?\#]+?)))(?<QUERYSTRING>\?[^\s\#]+)?(?<ANCHOR>\#\S+)?$)"
Local $sString = "Domain Name Root" & @CRLF & _
"https://www.domain.com/" & @CRLF & _
"https://www.domain.com/?with=queryString" & @CRLF & _
"https://www.domain.com/#withAnchor" & @CRLF & _
"https://www.domain.com/?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Full Domain Name With File" & @CRLF & _
"https://www.domain.com/with-file" & @CRLF & _
"https://www.domain.com/with-file?with=queryString" & @CRLF & _
"https://www.domain.com/with-file#withAnchor" & @CRLF & _
"https://www.domain.com/with-file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Full Domain Name With File With Extension" & @CRLF & _
"https://www.domain.com/file-with.ext" & @CRLF & _
"https://www.domain.com/file-with.ext?with=queryString" & @CRLF & _
"https://www.domain.com/file-with.ext#withAnchor" & @CRLF & _
"https://www.domain.com/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Full Domain Name With Path to File" & @CRLF & _
"https://www.domain.com/some-path/to/a/file" & @CRLF & _
"https://www.domain.com/some-path/to/a/file?with=queryString" & @CRLF & _
"https://www.domain.com/some-path/to/a/file#withAnchor" & @CRLF & _
"https://www.domain.com/some-path/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Full Domain Name With Path to File With Extension" & @CRLF & _
"https://www.domain.com/some-path/to/a/file-with.ext" & @CRLF & _
"https://www.domain.com/some-path/to/a/file-with.ext?with=queryString" & @CRLF & _
"https://www.domain.com/some-path/to/a/file-with.ext" & @CRLF & _
"https://www.domain.com/some-path/to/a/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Dynamic Protocol Full Domain" & @CRLF & _
"//www.domain.com/" & @CRLF & _
"//www.domain.com/?with=queryString" & @CRLF & _
"//www.domain.com/#withAnchor" & @CRLF & _
"//www.domain.com/?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Dynamic Protocol (Full Domain) to File" & @CRLF & _
"//www.domain.com/with-file" & @CRLF & _
"//www.domain.com/with-file?with=queryString" & @CRLF & _
"//www.domain.com/with-file#withAnchor" & @CRLF & _
"//www.domain.com/with-file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Dynamic Protocol (Full Domain) to File With Extension" & @CRLF & _
"//www.domain.com/with-file-with.ext" & @CRLF & _
"//www.domain.com/with-file-with.ext?with=queryString" & @CRLF & _
"//www.domain.com/with-file-with.ext#withAnchor" & @CRLF & _
"//www.domain.com/with-file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Dynamic Protocol (Full Domain), Path Leading to File" & @CRLF & _
"//www.domain.com/with/path/to/file" & @CRLF & _
"//www.domain.com/with/path/to/file?with=queryString" & @CRLF & _
"//www.domain.com/with/path/to/file#withAnchor" & @CRLF & _
"//www.domain.com/with/path/to/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Dynamic Protocol (Full Domain), Path Leading to File With Extension" & @CRLF & _
"//www.domain.com/with/path/to/file-with.ext" & @CRLF & _
"//www.domain.com/with/path/to/file-with.ext?with=queryString" & @CRLF & _
"//www.domain.com/with/path/to/file-with.ext#withAnchor" & @CRLF & _
"//www.domain.com/with/path/to/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"Root Relative File" & @CRLF & _
"/some-root-file" & @CRLF & _
"/some-root-file?with=queryString" & @CRLF & _
"/some-root-file#withAnchor" & @CRLF & _
"/some-root-file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Root Relative File With Extension" & @CRLF & _
"/root-file-with.ext" & @CRLF & _
"/root-file-with.ext?with=queryString" & @CRLF & _
"/root-file-with.ext#withAnchor" & @CRLF & _
"/root-file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Root Path to File" & @CRLF & _
"/some-root-path/to/a/file" & @CRLF & _
"/some-root-path/to/a/file?with=queryString" & @CRLF & _
"/some-root-path/to/a/file#withAnchor" & @CRLF & _
"/some-root-path/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Root Path to File With Extension" & @CRLF & _
"/some-root-path/to/a/file-with.ext" & @CRLF & _
"/some-root-path/to/a/file-with.ext?with=queryString" & @CRLF & _
"/some-root-path/to/a/file-with.ext#withAnchor" & @CRLF & _
"/some-root-path/to/a/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Same As Requestor) File" & @CRLF & _
"./relative-to-requester-file" & @CRLF & _
"./relative-to-requester-file?with=queryString" & @CRLF & _
"./relative-to-requester-file#withAnchor" & @CRLF & _
"./relative-to-requester-file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Same As Requestor) File With Extension" & @CRLF & _
"./relative-to-requester-file-with.ext" & @CRLF & _
"./relative-to-requester-file-with.ext?with=queryString" & @CRLF & _
"./relative-to-requester-file-with.ext#withAnchor" & @CRLF & _
"./relative-to-requester-file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Same As Requestor) Path To File" & @CRLF & _
"./relative-to-requester-path/to/a/file" & @CRLF & _
"./relative-to-requester-path/to/a/file?with=queryString" & @CRLF & _
"./relative-to-requester-path/to/a/file#withAnchor" & @CRLF & _
"./relative-to-requester-path/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Same As Requestor) Path To File With Extension" & @CRLF & _
"./relative-to-requester-path/to/a/file-with.ext" & @CRLF & _
"./relative-to-requester-path/to/a/file-with.ext?with=queryString" & @CRLF & _
"./relative-to-requester-path/to/a/file-with.ext#withAnchor" & @CRLF & _
"./relative-to-requester-path/to/a/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Above Requestor) File" & @CRLF & _
"../relative-file-up" & @CRLF & _
"../relative-file-up?with=queryString" & @CRLF & _
"../relative-file-up#withAnchor" & @CRLF & _
"../relative-file-up?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (Above Requestor) File With Extension" & @CRLF & _
"../relative-file-up-with.ext" & @CRLF & _
"../relative-file-up-with.ext?with=queryString" & @CRLF & _
"../relative-file-up-with.ext#withAnchor" & @CRLF & _
"../relative-file-up-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (two Above Requestor) File" & @CRLF & _
"../../relative-file-two-up" & @CRLF & _
"../../relative-file-two-up?with=queryString" & @CRLF & _
"../../relative-file-two-up#withAnchor" & @CRLF & _
"../../relative-file-two-up?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (two Above Requestor) File With Extension" & @CRLF & _
"../../relative-file-two-up.ext" & @CRLF & _
"../../relative-file-two-up.ext?with=queryString" & @CRLF & _
"../../relative-file-two-up.ext#withAnchor" & @CRLF & _
"../../relative-file-two-up.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative (n Above Requestor) File" & @CRLF & _
"../../../../../../../../relative-file-n-up" & @CRLF & _
"../../../../../../../../relative-file-n-up?with=queryString" & @CRLF & _
"../../../../../../../../relative-file-n-up#withAnchor" & @CRLF & _
"../../../../../../../../relative-file-n-up?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (Above Requestor) to File" & @CRLF & _
"../relative-path/up/to/a/file" & @CRLF & _
"../relative-path/up/to/a/file?with=queryString" & @CRLF & _
"../relative-path/up/to/a/file#withAnchor" & @CRLF & _
"../relative-path/up/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (Above Requestor) to File With Extension" & @CRLF & _
"../relative-path/up/to/a/file-with.ext" & @CRLF & _
"../relative-path/up/to/a/file-with.ext?with=queryString" & @CRLF & _
"../relative-path/up/to/a/file-with.ext#withAnchor" & @CRLF & _
"../relative-path/up/to/a/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (Two Above Requestor) to File" & @CRLF & _
"../../relative-path/two/up/to/a/file" & @CRLF & _
"../../relative-path/two/up/to/a/file?with=queryString" & @CRLF & _
"../../relative-path/two/up/to/a/file#withAnchor" & @CRLF & _
"../../relative-path/two/up/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (Two Above Requestor) to File With Extension" & @CRLF & _
"../../relative-path/two/up/to/a/file-with.ext" & @CRLF & _
"../../relative-path/two/up/to/a/file-with.ext?with=queryString" & @CRLF & _
"../../relative-path/two/up/to/a/file-with.ext#withAnchor" & @CRLF & _
"../../relative-path/two/up/to/a/file-with.ext?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (n Above Requestor) to File" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file?with=queryString" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file#withAnchor" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file?with=queryString#andAnchor" & @CRLF & _
"" & @CRLF & _
"Relative Path (n Above Requestor) to File With Extension" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file-with.ext" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file-with.ext?with=queryString" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file-with.ext#withAnchor" & @CRLF & _
"../../../../../relative-path/n/up/to/a/file-with.ext?with=queryString#andAnchor" & @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