I am not good at Regex but do_shortcode
will basically will not parse any shortcode in the attributes, this might help you out:
add_filter('the_content', function($c){
$pattern = '/<span\s*(.*?)data-value=["\']?\[(.*?)\]["\']?\s*(.*?)>\s*(.*?)\s*<\/span>/si';
$c = preg_replace_callback($pattern, function($c){
return isset( $c[2] ) ? str_replace(
$c[2],
do_shortcode("[{$c[2]}]"),
$c[0]
) : array_pop($c);
}, $c);
return $c;
});