2016-09-07 82 views
0

如何替換支架內的東西,除了支架內部的其他支架。替換爲ZZZZZ正則表達式來替換支架內部的東西,除了支架內部的其他支架

{ 
"0000" "1111" 
1111 
{ 222 } 
{ 333 } 
} 

將是:

{ 
ZZZZZ 
{ 222 } 
{ 333 } 
} 
+2

請問你總是替換文本跟着開括號?如果您提供更多示例,我們將能夠看到數據的實際結構。如果您搜索的文本可能位於其他括號內的任何位置,並且括號可以任意嵌套,則這種正則表達式要困難得多。 – 4castle

回答

0
({\n\s*)(?:[^}{]*)(\n\s*{) 

首先,捕獲組,(),匹配{,然後換行\n,則任何的空間量內。

({\n\s*) 

接着,非捕獲組內,匹配任何即}{,任意次數。

(?:[^}{]*) 

最後,同樣關閉我們如何開始:搶換行,空格的任何金額,而下一次打開{

(\n\s*{) 

這不匹配沒有內部括號的人,也不會工作,如果內部括號嵌套到3層。如果您提供的輸入的一些例子,我們可以提高匹配(如使用一看後面跳過內部比賽)

看到一個demo at regex101.com

+0

這是否在記事本+ +爲你工作? – DNKROZ

+0

感謝您的答案,它的工作原理!但是如果有換行符呢?我嘗試過換行,但它不起作用。此外,我已經嘗試在1行中放置2個字符串的4引號,並且它失敗了。拜託我需要你的幫忙。 –

+0

@MomarMaute你能用這種格式的例子更新你的問題嗎? – TemporalWolf

0

這應該做的伎倆在{ & {之間(?<=\{)(.*?)(?=\{)

enter image description here

這將匹配一切。
新的行字符不包含在這個正則表達式中。爲了能夠正確使用記事本++,需要檢查查找/替換窗口中的「匹配換行符」複選框。

+0

這匹配內部括號內的數據https://regex101.com/r/wM8tF5/1 – TemporalWolf

+0

@TemporalWolf 不在記事本+ +它沒有 - 與「匹配換行」複選框選中 – DNKROZ