Регулярные выражения. Замена между группой символов

Нужно сделать замену в строке.

было

* 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 Находит слова между символами {} - а нужно чтобы искать только между ** - если они не заключены в {}. А так же должен искать в начале строки без *, и в конце строки без **


Ответы (0 шт):