I noticed a really weird behaviour with get_matches.
Try to go to Special:AbuseFilter/tools and insert the following expression:
```
r := '';x := get_matches("\.(.)", 'foo');
ay := "foo bar";get_matches("\.(.)", 'foo');
old := get_matches("(?i)\| *xxx *= *([^|}\s]+)", r)[1];
new := get_matches("(?i)\| *xxx *= *([^|}\s]+)", a);
oldx[1] != false & new[0y[0] != false
```
and hit "Check syntax". Hooray, syntax is fine, let's evaluate it; try it, and you'll get an unknown error. Examinating the API response, an AFPUserVisibleException is thrown because, according to the message, you're trying to get an element from something that is not an array. However, the results of both get_matchesvariables should be arrays of length 2, like
```
firstx === [ false, false ] & secondy === [false, false]
```
So that the final check should be
```
false != false & false != false
```
But apparently something is highly broken in there. And there's even more: if you replace the last line with its first or second condition, they work as expected, and the error only happens when there are both.
UPDATE: this only happen with the backslash in place. Removing it (or replacing "foo" with something that matches the regex) makes everything work as it should.