我从正则表达式开始我的冒险。 我对拆分特殊格式的字符串感兴趣。如果一个字母不在括号内,它应该成为输出列表的另一个元素。分组在括号内的字母应该放在一起。在
样品:
我的字符串=>;通缉名单
"ab(hpl)x"
=>;['a', 'b', 'hpl', 'x']
"(pck)(kx)(sd)"
=>;['pck', 'kx', 'sd']
"(kx)kxx(kd)"
=>;['kx', 'k', 'x', 'x', 'kd']
"fghk"
=>;['f', 'g', 'h', 'k']
如何使用正则表达式和re.split
来实现它?
提前谢谢你的帮助。在
你想要
findall
而不是split
。使用这个re:r'(?<=\()[a-z]+(?=\))|[a-z]'
,它适用于所有的测试用例。在编辑:
如果要匹配大小写字母、数字和下划线,请将
[a-z]
替换为\w
。如果括号永远不会不平衡("abc(def"
),则可以删除lookbehind断言(?<=\()
)。在这不能用
re.split
完成,因为它需要对零长度匹配进行拆分。在来自http://docs.python.org/library/re.html#re.split:
另一种选择是:
还有一个例子:
^{pr2}$相关问题 更多 >
编程相关推荐