Replace shortcode in substring

Check the $str with get_shortcode_regex(). If $match is returned, you need to parse $str with do_shortcode() and then return it, else false proceed.

  1. GetShortCodeRegEx
  2. DoShortCode

UPDATE

After Sleeping, and while researching to answer your comment, has_shortcode() should be replaced by get_shortcode_regex(), which I have done in my original above.