Thanks for your bug report. This is one of the issues that /F was intended to resolve. $regmlex() does not just contain a list of items that you iterate through, it contains a list of items that are marked with the match and group values that PCRE returns during its search. In this case, $regmlex(1,0) is returning the actual number of matches returned by PCRE (when /F is not used). When you try to match $regmlex(1,1), $regmlex() does not contain any items that match that group. On the other hand, $regmlex(1,2) will find that group. So, yes, there is a disparity when /F is not used. That is why /F should always be used. Ideally, /F should be the default behaviour, however at the time that /F was added, the number of backward compatibility issues with older scripts was deemed too great, so it was added as an option.