Прежде всего, вы используете lookbehind для ~
, который будет соответствовать вещи внутри, но не будет потреблять ее (проще говоря, он не удалит ~
, только a
, которыес этим).
Во-вторых, вы используете отрицательный lookbehind, поэтому ваше регулярное выражение соответствует a
, а НЕ предваряется ~
.
Лучшее регулярное выражениедля вас это ~a\b
(без первой границы слова \b
, поскольку ~
определенно не является символом слова, а a
определенно есть, поэтому всегда верно)