#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?imx)(?(DEFINE)" & @CRLF & _
" (?<quote>['"])" & @CRLF & _
" (?<pair>" & @CRLF & _
" (?>" & @CRLF & _
" \w+" & @CRLF & _
" |(?:" & @CRLF & _
" (?<pairQuote>(?"e))[^'"]+?\k<pairQuote>" & @CRLF & _
" )" & @CRLF & _
" )" & @CRLF & _
" \s*\:" & @CRLF & _
" )" & @CRLF & _
" (?<string>" & @CRLF & _
" (?<stringQuote>(?"e))[\S\s]*?(?<!\\)\k<stringQuote>" & @CRLF & _
" )" & @CRLF & _
" (?<integer>\-?\d+(?:\.\d+)?(?:e[-+]\d+)?)" & @CRLF & _
" (?<scalar>true|false|null|(?&integer))" & @CRLF & _
" (?<elements>" & @CRLF & _
" \s*(?&value)" & @CRLF & _
" (?(R&array)|(?>(?:\s*\,(?&elements))|\s*))" & @CRLF & _
" )" & @CRLF & _
" (?<array>\[(?>(?&elements)|\s*)\])" & @CRLF & _
" (?<value>" & @CRLF & _
" (?&object)" & @CRLF & _
" |(?&string)" & @CRLF & _
" |(?&scalar)" & @CRLF & _
" |(?&array)" & @CRLF & _
" )" & @CRLF & _
" (?<members>" & @CRLF & _
" \s*(?&pair)\s*(?&value)" & @CRLF & _
" (?(R&object)|(?>(?:\s*\,(?&members))|\s*))" & @CRLF & _
" )" & @CRLF & _
" (?<object>\{(?&members)?\})" & @CRLF & _
")" & @CRLF & _
"" & @CRLF & _
"\A(?&object)\Z"
Local $sString = "{"menu": {" & @CRLF & _
" "header": "SVG Viewer"," & @CRLF & _
" "items": [" & @CRLF & _
" {"id": "Open"}," & @CRLF & _
" {"id": "OpenNew", "label": "Open New"}," & @CRLF & _
" null," & @CRLF & _
" {"id": "ZoomIn", "label": "Zoom In"}," & @CRLF & _
" {"id": "ZoomOut", "label": "Zoom Out"}," & @CRLF & _
" {"id": "OriginalView", "label": "Original View"}," & @CRLF & _
" null," & @CRLF & _
" {"id": "Quality"}," & @CRLF & _
" {"id": "Pause"}," & @CRLF & _
" {"id": "Mute"}," & @CRLF & _
" null," & @CRLF & _
" {"id": "Find", "label": "Find..."}," & @CRLF & _
" {"id": "FindAgain", "label": "Find Again"}," & @CRLF & _
" {"id": "Copy"}," & @CRLF & _
" {"id": "CopyAgain", "label": "Copy Again"}," & @CRLF & _
" {"id": "CopySVG", "label": "Copy SVG"}," & @CRLF & _
" {"id": "ViewSVG", "label": "View SVG"}," & @CRLF & _
" {"id": "ViewSource", "label": "View Source"}," & @CRLF & _
" {"id": "SaveAs", "label": "Save As"}," & @CRLF & _
" null," & @CRLF & _
" {"id": "Help"}," & @CRLF & _
" {"id": "About", "label": "About Adobe CVG Viewer..."}" & @CRLF & _
" ]," & @CRLF & _
" "test": [" & @CRLF & _
" "Some value"," & @CRLF & _
" 4," & @CRLF & _
" null,{}" & @CRLF & _
" ]," & @CRLF & _
" "empty_array":[-0.34E+4]" & @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