#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?x)(?(DEFINE)" & @CRLF & _
" (?<number> (?>-? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)?) )" & @CRLF & _
" (?<boolean> (?> true | false | null ))" & @CRLF & _
" (?<unquoted> (?> ([^"\\]* | \\ ["\\bfnrt\/] | \\ u [0-9a-f]{4} )* ))" & @CRLF & _
" (?<string> (?>" (?&unquoted) " ))" & @CRLF & _
" (?<array> (?> \[ (?: (?&json) (?: , (?&json) )* )? \s* \] ))" & @CRLF & _
" (?<pair> (?> \s* (?&string) \s* : (?&json) ))" & @CRLF & _
" (?<object> (?>\{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} ))" & @CRLF & _
" (?<json> (?>\s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* ))" & @CRLF & _
" )" & @CRLF & _
"(?<=") # Lookbehind for quote before parent key string" & @CRLF & _
"(?&unquoted) # parent key string " & @CRLF & _
"(?= # Lookahead for object properties including unique property marker" & @CRLF & _
""\s*:\s*{\s*" & @CRLF & _
"(?: (?&pair) (?: , (?&pair) )* )? # any number of property key value pairs, optional." & @CRLF & _
"(?:(?:\s* , )?\s* "type"\s*:\s*"title") # unique property marker, optionally perfixed with comma." & @CRLF & _
"(?: \s*, (?&pair) )* # any number of property key value pairs, optional." & @CRLF & _
"\s*}" & @CRLF & _
")"
Local $sString = " .." & @CRLF & _
" "id": "Xkt@"," & @CRLF & _
" "name": "My Email"," & @CRLF & _
" "type": "email"" & @CRLF & _
" }," & @CRLF & _
" "Item of Equipment": {" & @CRLF & _
" "id": "title"," & @CRLF & _
" "title": {}," & @CRLF & _
" "name": "Item of Equipment"," & @CRLF & _
" "type": "title"" & @CRLF & _
" }," & @CRLF & _
" "My Date": {" & @CRLF & _
" "id": "nYcK"," & @CRLF & _
" "name": "My Date"," & @CRLF & _
" "type": "date"," & @CRLF & _
" .." & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
""Item of Equipment": {" & @CRLF & _
" "type": "title"," & @CRLF & _
" "id": "title"," & @CRLF & _
" "title": {}," & @CRLF & _
" "name": "Item of Equipment"" & @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