TextPad Regex: Как найти и заменить символ в угловых скобках?

У меня есть образец текста ниже

Hello | World
<Hi | Hello|How | are | you><test|string |for |regex>
sample | text <however|replace|pipe>

быть преобразованным как ниже

Hello | World
<Hi ~ Hello~How ~ are ~ you><test~string ~for ~regex>
sample | text <however~replace~pipe>

т.е. заменить | в <> с ~

Я пробовал это <(?:.*?)(\|)(?:.*?)> ( http://regex101.com/r/mX1sO0)

Но это соответствует только первый | в пределах угла <>, И я не уверен, как это заменить. Любые направления?

1 ответ

Решение

Если ваши угловые скобки никогда не являются вложенными и всегда правильно сбалансированы, то вы можете сделать это:

\|(?=[^<>]*>)

соответствует только тем символам трубы, где следующая угловая скобка является закрывающей угловой скобкой. Тогда просто замените спички на ~,

Смотрите это в прямом эфире на regex101.com.

Другие вопросы по тегам