如何用re.split分割我的字符串?

Mac*_*rko 0 python regex split

我正在用正则表达式开始冒险.我有兴趣拆分特殊格式的字符串.如果一个字母不在括号内,它应该成为输出列表的不同元素.括号内的字母应放在一起.

样品:

我的字符串=>通缉名单

  • "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?在此先感谢您的帮助.

And*_*ark 5

这不能用re.split,因为它需要分割零长度匹配.

来自http://docs.python.org/library/re.html#re.split:

请注意,拆分永远不会在空模式匹配上拆分字符串.

这是一个替代方案:

re.findall(r'(\w+(?=\))|\w)', your_string)
Run Code Online (Sandbox Code Playgroud)

一个例子:

>>> for s in ("ab(hpl)x", "(pck)(kx)(sd)", "(kx)kxx(kd)", "fghk"):
...     print s, " => ", re.findall(r'(\w+(?=\))|\w)', s)
... 
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']
Run Code Online (Sandbox Code Playgroud)

  • 我主要使用http://www.regular-expressions.info/进行学习,而http://www.rubular.com/对于快速测试正则表达式非常有用. (2认同)