when filtering with pattern rules, all wildcards ( ’*’, ’?’, and ’[’ ) expect at least one character.
So there doesn't seem to be a way to match 'foo', 'foobar' and not match 'fo'.
('foo*','foo**','foo?','foo[a-z]' match foobar but not foo)
Regexes have the pattern modifier '*' for this, shell globbing expands '*' to any string (including empty ones), but this does not seem to be possible with rsync rules syntax.
PS: this bug is somewhat related to https://bugzilla.samba.org/show_bug.cgi?id=5758
"*" matches 0 or more characters, as does "**".