2016-05-31 2 views
2

Можно ли заменить точку символом подчеркивания, но только внутри фигурных скобок, используя только регулярное выражение?Regex заменить точку внутри фигурных скобок?

eg. a.b.c={{c.d.f}} 
    after the replace it should look like 
    a.b.c={{c_d_f}} 

фигурные скобки всегда сбалансированы и всегда будут две открытые фигурные скобки и две закрытые из них.

+1

какой язык программирования? – ritesht93

+2

укажите язык программирования вместе со всеми возможными предположениями, такими как сбалансированные скобки и должен ли контент быть внутри двойных скобок или может быть в одной скобке? – rock321987

+0

@ ritesht93 Regex вообще, он может любой текстовый редактор, обладающий возможностью Regex, например. Notepad ++. – panagdu

ответ

2

Вы можете использовать это опережение регулярное выражение для поиска:

\.(?=[^{}]*\}) 

LOOKAHEAD (?=[^{}]*\}) утверждает, что есть } вперед после 0 или более не { и не являющихся } символов.

и заменить _

RegEx Demo

+0

Это не проверяет, является ли точка * внутри * сопряженной фигурной скобкой. –

+0

Это предполагает, что '{' и '}' сбалансированы и нет экранирования. – anubhava

+1

@anubhava Большое спасибо! Кажется, это отлично работает для меня! – panagdu

1

Вы можете использовать \G как (предполагая . внутри только {{ и не вложенности)

(?:(\{\{)|\G(?!\A))([^.}]*)[.] 

и заменить

\1\2_ 

Regex Demo

0

Если и предположить, что существует один символ между точками использования: Поиск: {((. (.)..}). {)} Заменить: \ 1_ \ 2_ \ 3 Если один или более: Поиск: ({{. +). (. +). (. +}}) При этом заменить

Смежные вопросы