Regex : get word with space and specific character except tag

I am trying to write a String substitution to match any character (a word) with a space after and a ? or : or ! but except all tag.

The goal is to retrieve single words that have after them a space and ?, : or ! to encapsulate them in a tag <span style="display:inline-block;">$1</span>

I try :

([S]* [?:!])

An example : demo link

For test1 to test4 it’s good.

For test5 I don’t want to capture it at all

For test6 I want to capture all the line

For test7 I want only test7 ?

For test8 I want only test8 <span>:</span>

For test9 I want to capture all the line

Tags are just examples