2016-11-09 54 views
1

我想要构建一个正则表达式来分割'.''[]',但在这里,我想保留方括号中的结果。正则表达式用方括号和点分割python和re模块

我的意思是:

import re 
pattern = re.compile("\.|[\[-\]]") 
my_string = "a.b.c[0].d.e[12]" 
pattern.split(my_string) 

# >>> ['a', 'b', 'c', '0', '', 'd', 'e', '12', ''] 

但我希望得到下面的输出(没有任何空字符串):

# >>> ['a', 'b', 'c', '0', 'd', 'e', '12'] 

将是这可能吗?我已经测试了很多正则表达式,这是我找到的最好的,但并不完美。

回答

1

你可以在你的正则表达式和filter使用量词:

>>> pattern = re.compile(r'[.\[\]]+') 
>>> my_string = "a.b.c[0].d.e[12]" 
>>> filter(None, pattern.split(my_string)) 
['a', 'b', 'c', '0', 'd', 'e', '12'] 
+1

非常感谢!你的regex表达式比我的更好,因为它解决了我在结果元素之间的空字符串问题 – fenix688