I noticed a really weird behaviour with get_matches.
Try to go to Special:AbuseFilter/tools and insert the following expression:
```
xa := get_matches("\.(.)"[false, 'foo');false];
yb := get_matches("\.(.)"[false, 'foo');false];
x[1a[0] != false & y[0b[1] != 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, both variables should bare of course arrays of length 2, like.
```
x === [ false, false ] & y === [false, false]
```
So that the final check should be
```
false != false & false != false
```
But aApparently 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.is not a regression, Removing it (or replacing "foo" with something that matches the regex) makes everything work as it shouldsince it also happened at the time of [[https://gerrit.wikimedia.org/g/mediawiki/extensions/AbuseFilter/+/4e20c933f4e89fb2375b9f3be4e1984fe1405b72|get_matches introduction]] (which I first thought was the cause here).