2016-05-31 99 views
2

是否可以用下划线替换点,而只用正则表达式使用正则表达式呢?正则表达式来替换大括号内的点?

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正则表达式一般来说,它可以是任何具有正则表达式能力的文本编辑器。记事本+ +。 – panagdu

回答

2

您可以使用此前瞻的正则表达式搜索:

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

先行(?=[^{}]*\})声称有后0或多个非{和非}字符提前}

_

RegEx Demo

+0

这并不检查一个点是否在*成对的大括号内。 –

+0

这是假设'{'和'}'平衡并且没有逃脱。 – anubhava

+1

@anubhava非常感谢!这似乎对我很好! – panagdu

1

更换可以使用\G像(假设.{{内,没有嵌套)

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

,代之以

\1\2_ 

Regex Demo

0

如果妳假设存在点之间的一个字符,请使用: 搜索:{(((。)。})。{)} 替换:\ 1_ \ 2_8 \ 3 如果一个或更多: 搜索:({{。+)。(。+)。(。+}}) 使用相同的替换