It is hard (for me) to read and follow your explanation, but I am reasonably sure you are seeing the result of python 3's change to regular expressions. With the change, if the expression can then it will match both entire string and the empty space at the beginning of the string. In your case it can. You get two matches where before you got one.
If this is your problem (and I think it is) then you can fix it by ensuring the pattern:
- matches only the entire string by using anchors, as in (^.*$)
- can't match the empty string with either (..*) or (.+)
Calibre switched to python 3 in V5.