In openHAB the regex must match the entire string. The first matching group (i.e. stuff in parens) is what get’s returned. That pattern doesn’t do that. For one, \d
matches digits, not letters so it won’t match the starting “v”.
I find it easiest to be simple. We don’t really care about efficiency here as the strings are usually very short and the regex is not called that often. So keep it simple.
v(\d\.\d\d)\(tasmota\)
Or even simpler:
v(.*)\(tasmota\)
Just in case there is some white space before or after you can use
.*v(.*)\(tasmota\).*
See MQTT 2.5 M1+ How to implement the equivalent to MQTT1 REGEX filters, only the regex will go second instead of first as shown in that example.