2015-04-03 74 views
0

輸入逃脫方括號,除了開始和蟒蛇該支架的末端內的所有字符:我想用正則表達式

[cd ab:12:00][abc-12][abc.c 12][abc] 

所需的輸出:

[][][][] 
+1

你是什麼意思逃逸做?這個're.sub(r'\ [[^ \]] * \]',r'[]',s)'給出您所期望的輸出。 – 2015-04-03 04:54:02

+1

這看起來像你只是將它們刪除,而不是逃脫它們。 – Barmar 2015-04-03 04:55:27

+0

謝謝@AvinashRaj – user3468904 2015-04-03 05:20:07

回答

0

你可以通過re.sub功能做到這一點。

>>> s = '[cd ab:12:00][abc-12][abc.c 12][abc]' 
>>> re.sub(r'\[[^\]]*\]', r'[]', s) 
'[][][][]' 

正則表達式說明:

  • \[字面[符號相匹配。
  • [^\]]*否定字符類匹配任何字符但不匹配],零次或多次。所以這匹配了兩個方括號之間的所有字符。
  • \]與文字]的括號相符。所以這個正則表達式可以匹配所有的方括號。用[]替換所有匹配的塊將爲您提供去除方括號內所有字符所需的輸出。

您可以通過使用lookaround斷言來實現相同。

>>> re.sub(r'(?<=\[)[^\]]*(?=\])', r'', s) 
'[][][][]' 
0

使用[^\[\]]+

匹配所有除[]。你可以用""

防爆取代匹配:

re.sub(r'[^\[\]]+', r'', str); 
+0

如果我想要[] [abc-12] [] [abc]? – user3468904 2015-04-03 13:26:03

+0

它也適用於此!請參閱[DEMO](https://ideone.com/65qPu7) – 2015-04-03 19:07:08

+0

我想這[] [abc-12] [] [abc]作爲o/p? – user3468904 2015-04-06 04:10:37