let
Match = (input, pattern, flags) => Json.Document(Web.Page("
<script>
var dq = String.fromCharCode(34);
var input = '" & Text.Replace(Text.Replace(input, "\", "\\"), "'", "\'") & "';
var pattern = '" & Text.Replace(Text.Replace(pattern, "\", "\\"), "'", "\'") & "';
var flags = '" & Text.Replace(Text.Replace(flags, "\", "\\"), "'", "\'") & "';
var re = new RegExp(pattern, flags);
var match = re.exec(input);
try {
document.write(stringify(match))
}
catch (e) {
document.write(e.message);
}
function stringify(value) {
if (value === null) return 'null';
if (typeof value === 'undefined') return 'undefined';
if (typeof value === 'number') return value.toString();
if (typeof value === 'boolean') return value.toString();
if (typeof value === 'string') return dq + value.replace(new RegExp(dq, 'g'), '\\' + dq) + dq;
var s = '';
if (value instanceof Array) {
for (var i = 0; i < value.length; i++) {
if (s) s += ', ';
s += stringify(value[i]);
}
return '[' + s + ']';
}
else {
for (var p in value) {
if (value.hasOwnProperty(p)) {
if (s) s += ', ';
s += stringify(p) + ': ' + stringify(value[p]);
}
}
return '{' + s + '}';
}
}
</script>
")[Data]{0}[Children]{0}[Children]{1}[Text]{0})
in Match