#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?x)(?<callsign>\w+?)>APRS,.+?," & @CRLF & _
"(?<receiver>\w+):\/" & @CRLF & _
"(?<time>\d{6})h" & @CRLF & _
"(?<latitude>\d{4}\.\d{2}[NS])." & @CRLF & _
"(?<longitude>\d{5}\.\d{2}[EW])." & @CRLF & _
"(?:(?<heading>\d{3})\/(?<ground_speed>\d{3}))?.*?" & @CRLF & _
"\/A=(?<altitude>\d{6})\s" & @CRLF & _
"(?:!W((?<latitude_enhancement>\d)(?<longitude_enhancement>\d))!)?" & @CRLF & _
"(?:v(?<version>\d+\.\d+\.\d+)(?:\.(?<platform>.+?))?\s)?" & @CRLF & _
"CPU:(?<cpu_load>[\d.]+)\s" & @CRLF & _
"RAM:(?<ram_free>[\d.]+)\/(?<ram_total>[\d.]+)MB\s" & @CRLF & _
"NTP:(?<ntp_offset>[\d.]+)ms\/(?<ntp_correction>[+-][\d.]+)ppm\s?" & @CRLF & _
"(?:(?<cpu_temperature>[+-][\d.]+)C\s*)?" & @CRLF & _
"(?:RF:" & @CRLF & _
" (?:" & @CRLF & _
" (?<manual_correction>[+-][\d]+)" & @CRLF & _
" (?<automatic_correction>[+-][\d.]+)ppm\/" & @CRLF & _
" )?" & @CRLF & _
" (?<signal>[+-][\d.]+)dB" & @CRLF & _
")?"
Local $sString = "LKHS>APRS,TCPIP*,qAC,GLIDERN2:/211635h4902.45NI01429.51E&000/000/A=001689 v0.2.4.ARM CPU:0.2 RAM:777.7/972.2MB NTP:3.1ms/-3.8ppm +33.6C RF:+62-0.8ppm/+33.66dB" & @CRLF & _
"" & @CRLF & _
"Moosburg>APRS,TCPIP*,qAC,GLIDERN1:/232205h4827.52NI01155.89E&000/000/A=001397 v0.2.4.ARM CPU:0.8 RAM:788.7/1017.6MB NTP:16000.0ms/-73.4ppm RF:+8.00dB"
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