# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = (r"(?smx)\n"
r"(?(DEFINE)\n"
r" (?<jsonObject>\n"
r" \{(?&jsonField)(?>,(?&jsonField))*+\}|\n"
r" \{[[:space:]]*+\}\n"
r" )\n"
r" (?<jsonArray>\n"
r" \[(?&jsonValue)(?>,(?&jsonValue))*+\]|\n"
r" \[[[:space:]]*+\]\n"
r" )\n"
r" (?<string>\n"
r" \"\n"
r" [^\"\\]*+\n"
r" (?>\n"
r" (?>\n"
r" \\[\"\\\/rntfb]|\n"
r" \\u[[:xdigit:]]{4}\n"
r" )++\n"
r" [^\"\\]*+\n"
r" )*+\n"
r" \"\n"
r" )\n"
r" (?<number>\n"
r" \-?+\n"
r" (?>\n"
r" [1-9][[:digit:]]*+|\n"
r" 0\n"
r" )\n"
r" (?>\.[[:digit:]]++)?+\n"
r" (?>[eE][\+\-]?+[[:digit:]]++)?+\n"
r" )\n"
r" (?<jsonValue>\n"
r" [[:space:]]*+\n"
r" (?>\n"
r" (?&string)|\n"
r" (?&number)|\n"
r" (?&jsonObject)|\n"
r" (?&jsonArray)|\n"
r" false|\n"
r" true|\n"
r" null\n"
r" )\n"
r" [[:space:]]*+\n"
r" )\n"
r" (?<jsonField>\n"
r" [[:space:]]*+(?&string)[[:space:]]*+\:\n"
r" (?&jsonValue)\n"
r" )\n"
r")\n"
r"^(?&jsonValue),\n")
test_str = ("null,\n"
" null,\n"
"null ,\n"
" null ,\n"
"false,\n"
" false,\n"
"false ,\n"
" false ,\n"
"true,\n"
" true,\n"
"true ,\n"
" true ,\n"
"123,\n"
"0,\n"
"-123,\n"
"-0,\n"
"123.0,\n"
"0.0,\n"
"-123.0,\n"
"-0.0,\n"
"123e1,\n"
"0e1,\n"
"-123e1,\n"
"-0e1,\n"
"123.0e1,\n"
"0.0e1,\n"
"-123.0e1,\n"
"-0.0e1,\n"
"123e+1,\n"
"0e+1,\n"
"-123e+1,\n"
"-0e+1,\n"
"123.0e+1,\n"
"0.0e+1,\n"
"-123.0e+1,\n"
"-0.0e+1,\n"
"123e-1,\n"
"0e-1,\n"
"-123e-1,\n"
"-0e-1,\n"
"123.0e-1,\n"
"0.0e-1,\n"
"-123.0e-1,\n"
"-0.0e-1,\n"
"123E1,\n"
"0E1,\n"
"-123E1,\n"
"-0E1,\n"
"123.0E1,\n"
"0.0E1,\n"
"-123.0E1,\n"
"-0.0E1,\n"
"123E+1,\n"
"0E+1,\n"
"-123E+1,\n"
"-0E+1,\n"
"123.0E+1,\n"
"0.0E+1,\n"
"-123.0E+1,\n"
"-0.0E+1,\n"
"123E-1,\n"
"0E-1,\n"
"-123E-1,\n"
"-0E-1,\n"
"123.0E-1,\n"
"0.0E-1,\n"
"-123.0E-1,\n"
"-0.0E-1,\n"
" 123,\n"
" 0,\n"
" -123,\n"
" -0,\n"
" 123.0,\n"
" 0.0,\n"
" -123.0,\n"
" -0.0,\n"
" 123e1,\n"
" 0e1,\n"
" -123e1,\n"
" -0e1,\n"
" 123.0e1,\n"
" 0.0e1,\n"
" -123.0e1,\n"
" -0.0e1,\n"
" 123e+1,\n"
" 0e+1,\n"
" -123e+1,\n"
" -0e+1,\n"
" 123.0e+1,\n"
" 0.0e+1,\n"
" -123.0e+1,\n"
" -0.0e+1,\n"
" 123e-1,\n"
" 0e-1,\n"
" -123e-1,\n"
" -0e-1,\n"
" 123.0e-1,\n"
" 0.0e-1,\n"
" -123.0e-1,\n"
" -0.0e-1,\n"
" 123E1,\n"
" 0E1,\n"
" -123E1,\n"
" -0E1,\n"
" 123.0E1,\n"
" 0.0E1,\n"
" -123.0E1,\n"
" -0.0E1,\n"
" 123E+1,\n"
" 0E+1,\n"
" -123E+1,\n"
" -0E+1,\n"
" 123.0E+1,\n"
" 0.0E+1,\n"
" -123.0E+1,\n"
" -0.0E+1,\n"
" 123E-1,\n"
" 0E-1,\n"
" -123E-1,\n"
" -0E-1,\n"
" 123.0E-1,\n"
" 0.0E-1,\n"
" -123.0E-1,\n"
" -0.0E-1,\n"
"123 ,\n"
"0 ,\n"
"-123 ,\n"
"-0 ,\n"
"123.0 ,\n"
"0.0 ,\n"
"-123.0 ,\n"
"-0.0 ,\n"
"123e1 ,\n"
"0e1 ,\n"
"-123e1 ,\n"
"-0e1 ,\n"
"123.0e1 ,\n"
"0.0e1 ,\n"
"-123.0e1 ,\n"
"-0.0e1 ,\n"
"123e+1 ,\n"
"0e+1 ,\n"
"-123e+1 ,\n"
"-0e+1 ,\n"
"123.0e+1 ,\n"
"0.0e+1 ,\n"
"-123.0e+1 ,\n"
"-0.0e+1 ,\n"
"123e-1 ,\n"
"0e-1 ,\n"
"-123e-1 ,\n"
"-0e-1 ,\n"
"123.0e-1 ,\n"
"0.0e-1 ,\n"
"-123.0e-1 ,\n"
"-0.0e-1 ,\n"
"123E1 ,\n"
"0E1 ,\n"
"-123E1 ,\n"
"-0E1 ,\n"
"123.0E1 ,\n"
"0.0E1 ,\n"
"-123.0E1 ,\n"
"-0.0E1 ,\n"
"123E+1 ,\n"
"0E+1 ,\n"
"-123E+1 ,\n"
"-0E+1 ,\n"
"123.0E+1 ,\n"
"0.0E+1 ,\n"
"-123.0E+1 ,\n"
"-0.0E+1 ,\n"
"123E-1 ,\n"
"0E-1 ,\n"
"-123E-1 ,\n"
"-0E-1 ,\n"
"123.0E-1 ,\n"
"0.0E-1 ,\n"
"-123.0E-1 ,\n"
"-0.0E-1 ,\n"
" 123 ,\n"
" 0 ,\n"
" -123 ,\n"
" -0 ,\n"
" 123.0 ,\n"
" 0.0 ,\n"
" -123.0 ,\n"
" -0.0 ,\n"
" 123e1 ,\n"
" 0e1 ,\n"
" -123e1 ,\n"
" -0e1 ,\n"
" 123.0e1 ,\n"
" 0.0e1 ,\n"
" -123.0e1 ,\n"
" -0.0e1 ,\n"
" 123e+1 ,\n"
" 0e+1 ,\n"
" -123e+1 ,\n"
" -0e+1 ,\n"
" 123.0e+1 ,\n"
" 0.0e+1 ,\n"
" -123.0e+1 ,\n"
" -0.0e+1 ,\n"
" 123e-1 ,\n"
" 0e-1 ,\n"
" -123e-1 ,\n"
" -0e-1 ,\n"
" 123.0e-1 ,\n"
" 0.0e-1 ,\n"
" -123.0e-1 ,\n"
" -0.0e-1 ,\n"
" 123E1 ,\n"
" 0E1 ,\n"
" -123E1 ,\n"
" -0E1 ,\n"
" 123.0E1 ,\n"
" 0.0E1 ,\n"
" -123.0E1 ,\n"
" -0.0E1 ,\n"
" 123E+1 ,\n"
" 0E+1 ,\n"
" -123E+1 ,\n"
" -0E+1 ,\n"
" 123.0E+1 ,\n"
" 0.0E+1 ,\n"
" -123.0E+1 ,\n"
" -0.0E+1 ,\n"
" 123E-1 ,\n"
" 0E-1 ,\n"
" -123E-1 ,\n"
" -0E-1 ,\n"
" 123.0E-1 ,\n"
" 0.0E-1 ,\n"
" -123.0E-1 ,\n"
" -0.0E-1 ,\n"
"\"\",\n"
"\"zyxwvuts\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\u1234\\uabcd\\uABCD\",\n"
"\"zyxwvutszyxwvuts\",\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
"\"zyxwvutszyxwvutszyxwvuts\",\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
"\"\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts\",\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
"\"zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
"\"zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD\",\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD\",\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
" \"\",\n"
" \"zyxwvuts\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\u1234\\uabcd\\uABCD\",\n"
" \"zyxwvutszyxwvuts\",\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
" \"zyxwvutszyxwvutszyxwvuts\",\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
" \"\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts\",\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\",\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts\",\n"
" \"zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\",\n"
" \"zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD\",\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD\",\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\",\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\",\n"
"\"\" ,\n"
"\"zyxwvuts\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\u1234\\uabcd\\uABCD\" ,\n"
"\"zyxwvutszyxwvuts\" ,\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
"\"zyxwvutszyxwvutszyxwvuts\" ,\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
"\"\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
"\"zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
"\"zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
"\"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
"\"zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
"\"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
" \"\" ,\n"
" \"zyxwvuts\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\u1234\\uabcd\\uABCD\" ,\n"
" \"zyxwvutszyxwvuts\" ,\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
" \"zyxwvutszyxwvutszyxwvuts\" ,\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
" \"\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts\" ,\n"
" \"zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\" ,\n"
" \"zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
" \"zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
" \"zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\" ,\n"
" \"\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\" ,\n"
"{},\n"
"{ },\n"
"{\"1\":1},\n"
"{ \"1\" : 1 },\n"
"{\"1\":1,\"2\":2},\n"
"{ \"1\" : 1, \"2\" : 2 },\n"
" {},\n"
" { },\n"
" {\"1\":1},\n"
" { \"1\" : 1 },\n"
" {\"1\":1,\"2\":2},\n"
" { \"1\" : 1, \"2\" : 2 },\n"
"{} ,\n"
"{ } ,\n"
"{\"1\":1} ,\n"
"{ \"1\" : 1 } ,\n"
"{\"1\":1,\"2\":2} ,\n"
"{ \"1\" : 1, \"2\" : 2 } ,\n"
" {} ,\n"
" { } ,\n"
" {\"1\":1} ,\n"
" { \"1\" : 1 } ,\n"
" {\"1\":1,\"2\":2} ,\n"
" { \"1\" : 1, \"2\" : 2 } ,\n"
"[],\n"
"[ ],\n"
"[1],\n"
"[ 1 ],\n"
"[1,2],\n"
"[ 1, 2 ],\n"
" [],\n"
" [ ],\n"
" [1],\n"
" [ 1 ],\n"
" [1,2],\n"
" [ 1, 2 ],\n"
"[] ,\n"
"[ ] ,\n"
"[1] ,\n"
"[ 1 ] ,\n"
"[1,2] ,\n"
"[ 1, 2 ] ,\n"
" [] ,\n"
" [ ] ,\n"
" [1] ,\n"
" [ 1 ] ,\n"
" [1,2] ,\n"
" [ 1, 2 ] ,\n"
"{\"x\":{}},\n"
"{\"x\":[]},\n"
"{ \"x\" : {} },\n"
"{ \"x\" : [] },\n"
"[{}],\n"
"[[]],\n"
"[ { } ],\n"
"[ [ ] ],\n"
" {\"x\":{}},\n"
" {\"x\":[]},\n"
" { \"x\" : {} },\n"
" { \"x\" : [] },\n"
" [{}],\n"
" [[]],\n"
" [ { } ],\n"
" [ [ ] ],\n"
"{\"x\":{}} ,\n"
"{\"x\":[]} ,\n"
"{ \"x\" : {} } ,\n"
"{ \"x\" : [] } ,\n"
"[{}] ,\n"
"[[]] ,\n"
"[ { } ] ,\n"
"[ [ ] ] ,\n"
" {\"x\":{}} ,\n"
" {\"x\":[]} ,\n"
" { \"x\" : {} } ,\n"
" { \"x\" : [] } ,\n"
" [{}] ,\n"
" [[]] ,\n"
" [ { } ] ,\n"
" [ [ ] ] ,\n\n"
"#values to NOT match\n"
"Null,\n"
"False,\n"
"True,\n"
"01,\n"
"+1,\n"
"1.,\n"
"\" \" \",\n"
"\" \\ \",\n"
"\" \\x \",\n"
"\"\"x,\n")
matches = re.finditer(regex, test_str)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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 Python, please visit: https://docs.python.org/3/library/re.html