Попробуйте это:
\.(?![^<]*\/>)
Демонстрация
Механизм регулярных выражений выполняет следующие операции.
\. # match period
(?! # begin negative lookahead
[^<]* # match 0+ chars other than '<'
\/> # match '/>'
)
Отрицательный просмотр завершается неудачно, если он встречает />
после периода без какого-либо вмешательства <
, означая, что период должен быть между <
и />
.
Вы будете sh, чтобы заменить каждое совпадение периода на *
. То, как вы это делаете, зависит от языка, который вы используете, но это, несомненно, просто.