The existing regex *also* requires that something always follows the dash, and it too excludes : from appearing in the header name because the \S*? is a non-greedy evaluation.  But your point on using ASCII printable vs \S is valid, and I have modified my regexp.

Why strip the extra spaces after the :?  This breaks my documented behavior of passing through the SA headers *unaltered*.