#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?im)^[\t ]*host[\t ]+(.+?)[\t ]*\n(?:(?!(?:^[\t ]*#.*\n)*[\t ]*host\b)[\t ]*(?:(\w+)\b(?:[\t ]*=[\t ]*|[\t ]+)(.*)|#.*)?(?:\n|\Z))+"
Local $sString = "Host test " & @CRLF & _
" Hostname test.domain.com" & @CRLF & _
" User james" & @CRLF & _
" Port 22" & @CRLF & _
" # Comment" & @CRLF & _
" IdentityFile ~/.ssh/key.pub" & @CRLF & _
"" & @CRLF & _
"# With 2 aliases" & @CRLF & _
"Host test2 test-2" & @CRLF & _
" Hostname test2.domain.com" & @CRLF & _
" User = james" & @CRLF & _
" Port=22" & @CRLF & _
" # Port 23" & @CRLF & _
" IdentityFile = ~/.ssh/key2.pub" & @CRLF & _
"" & @CRLF & _
"# For all hosts except test2, activate compression and set log level:" & @CRLF & _
"Host * !test2" & @CRLF & _
" Compression yes" & @CRLF & _
" LogLevel INFO" & @CRLF & _
"" & @CRLF & _
" IdentityFile ~/.ssh/id_rsa" & @CRLF & _
"" & @CRLF & _
"Host *.sweet.home" & @CRLF & _
" Hostname 192.168.2.17" & @CRLF & _
" User tom" & @CRLF & _
" IdentityFile "~/.ssh/id tom.pub" # If has spaces, then quote it." & @CRLF & _
"" & @CRLF & _
"# With a lot of spaces between lines" & @CRLF & _
"Host localhost" & @CRLF & _
"" & @CRLF & _
" Hostname 127.0.0.*" & @CRLF & _
"" & @CRLF & _
" IdentityFile ~/.ssh/id_rsa" & @CRLF & _
"" & @CRLF & _
"# Without empty lines between Host definitions:" & @CRLF & _
"Host dummy" & @CRLF & _
" Hostname ssh.dummy.com" & @CRLF & _
" User user" & @CRLF & _
"Host dummy2" & @CRLF & _
" Hostname ssh.dummy2.com" & @CRLF & _
" User user"
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