We need more "scope" on this problem. For example, do you currently rewrite the "good" numerical URLs to a script, passing the product number as a query string?
If so, the change must be fully-integrated with that existing code, so that chained/stacked rewrites do not take place. Otherwise, you will trigger a known apache bug, and encounter big problems.
On its face this is not at all a difficult problem, and RewriteCond or RewriteRule can test the requested URL-path for "B\+B" at the beginning, and rewrite that to B%2BB (you probably do NOT want to rewrite it to the
doubly-encoded "B%252BB" as shown above).
RewriteRule ^B\+B([0-9]+)$ /B\%2BB$1 [NE,L]
But as stated, this function needs to be integrated with any further rules that would apply, so that these requests will be rewritten to their final destination filepath with a single rule.
Jim