#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?ium)([-\.\w]+:\/{2,3})(?!.*[.]{2})(?![-.*\.])((?!.*@\.)[-_\w@^=%&:;~+\.]+(?<![-\.]))(\/[-_\w@^=%&:;/~+\.]+(?<!\.))?\??([-_\w=&@$!|~+]+)*#?([-_\w=&@$!|~+]+)*"
Local $sString = "DB_URL=postgresql://postgres:postgres@localhost/postgres?timeout=0" & @CRLF & _
"# Damn, Daniel!" & @CRLF & _
"" & @CRLF & _
"Bob: have you checked https://www.facebook.com?" & @CRLF & _
"lorem https://github.com/justsml?tab=activity#top ipsum" & @CRLF & _
"smb:///winbox/dfs/ - ipp://printer" & @CRLF & _
"leading text chrome-extension://flags??#" & @CRLF & _
"s3://buckets/for/all?true=true" & @CRLF & _
"s3:///////buckets-o-fun" & @CRLF & _
"pkcs11://because-pkcs7-is-weak#only=hash" & @CRLF & _
"\||@@https://www.google.com <- should match when extracting" & @CRLF & _
"https://we - this is valid" & @CRLF & _
"s3://buckets-o-fun/!hi/raw=val&#keep=hashin'?" & @CRLF & _
"http://aaa.com.co.com:8080/test?dan=dev#den" & @CRLF & _
"hi. pkcs11://because-pkcs7-is-weak" & @CRLF & _
"hi. a://b/c?d=e#f=g && a://b/c?d]" & @CRLF & _
"hi. chrome-extension://flags hi. " & @CRLF & _
"hi. ms-help://good-luck/index.html hi. " & @CRLF & _
"hi. .iris.beep://really/dots. hi. " & @CRLF & _
"hi. iris.beep://really/dots?test=qs hi. " & @CRLF & _
"---" & @CRLF & _
"a://b]/c - Should match `a://b` - it's smallest match." & @CRLF & _
"http://www.c:ool.com.au - this one's tricky, should match auth URIs: proto://user:pass@host. Including cases where the password could be omitted (`proto://user@host`.)" & @CRLF & _
"boop://really-/ -- technically domains shouldn't end in dashes or other 'special' chars, but this is technically a valid URI." & @CRLF & _
"---" & @CRLF & _
"a://b./c?d. -- bad dns, trailing dot: tricky w/o look-arounds. (Adding an OR pattern would muddle the returned data indexes.) -- should match `a://b`" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"Invalid Examples:" & @CRLF & _
"https://www...google...com" & @CRLF & _
"https://we@.com" & @CRLF & _
"https://asdas-.com" & @CRLF & _
"http://-apple-.com" & @CRLF & _
"a://(b/c" & @CRLF & _
"chrome-extension)://flags" & @CRLF & _
"ms-help://|good-luck.html" & @CRLF & _
". , ; : ) ] } " & @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