我想用正则表达式
你可以通过re.sub
功能做到这一点。
>>> s = '[cd ab:12:00][abc-12][abc.c 12][abc]'
>>> re.sub(r'\[[^\]]*\]', r'[]', s)
'[][][][]'
正则表达式说明:
-
\[
字面[
符号相匹配。 -
[^\]]*
否定字符类匹配任何字符但不匹配]
,零次或多次。所以这匹配了两个方括号之间的所有字符。 -
\]
与文字]
的括号相符。所以这个正则表达式可以匹配所有的方括号。用[]
替换所有匹配的块将为您提供去除方括号内所有字符所需的输出。
您可以通过使用lookaround断言来实现相同。
>>> re.sub(r'(?<=\[)[^\]]*(?=\])', r'', s)
'[][][][]'
使用[^\[\]]+
匹配所有除[
和]
。你可以用""
防爆取代匹配:
re.sub(r'[^\[\]]+', r'', str);
如果我想要[] [abc-12] [] [abc]? – user3468904 2015-04-03 13:26:03
它也适用于此!请参阅[DEMO](https://ideone.com/65qPu7) – 2015-04-03 19:07:08
我想这[] [abc-12] [] [abc]作为o/p? – user3468904 2015-04-06 04:10:37
你是什么意思逃逸做?这个're.sub(r'\ [[^ \]] * \]',r'[]',s)'给出您所期望的输出。 – 2015-04-03 04:54:02
这看起来像你只是将它们删除,而不是逃脱它们。 – Barmar 2015-04-03 04:55:27
谢谢@AvinashRaj – user3468904 2015-04-03 05:20:07