Регулярные выражения. Замена между группой символов
Нужно сделать замену в строке.
было
* one/two * {three} *
стало
* {one/two} * {three} *
Делаю так:
[\*](.*?)[\~\*]
+ замена на * {\1} *
В итоге этот список:
* one/two * {three} *
* one * {tw~/thr~} * fou~ *
* one * {tw~/three} * {fou~/fiv~ si~} *
* {on~/tw~ thre~} * fou~ {fiv~/si~} *
* {on~/~tw~/thre~} * fiv~ *
one * {two} *
* one * two
* one * two *
Преобразуется к такому:
* { one/two } * {three} *
* { one } * {tw~/thr~} * { fou} * *
* { one } * {tw~/three} * { {fou} */fiv~ si~} *
* { {on} */tw~ thre~} * { fou} * {fiv~/si~} *
* { {on} */~tw~/thre~} * { fiv} * *
one * { {two} } *
* { one } * two
* { one } * two *
Вот тесты на regexp101 - https://regex101.com/r/ApHQy6/2
Как сделать правильно ?
p.s Находит слова между символами {} - а нужно чтобы искать только между ** - если они не заключены в {}. А так же должен искать в начале строки без *, и в конце строки без **