Я бы сказал, что с вашим регулярным выражением все в порядке, вам просто нужно использовать \w
(буквенно-цифровой символ) вместо \d
(цифра):
@"\B!\w+\b"
будет соответствовать любому слову, которому непосредственно предшествует !
, если только самому !
не предшествует само слово (это то, что утверждает \B
). Использование ^
вместо этого ограничит совпадения словами, которые начинаются в начале строки, что может быть не тем, что вы хотите.
Таким образом, это будет соответствовать всем словам, включая ровно одно предшествующее !
в этой строке:
!hello !this ...!will !!!be !matched!
но ни одно из слов в этой строке:
this! won't!be matched!!!
Вы также можете вообще отказаться от \B
, если не возражаете против совпадения !that
в this!that
.