拆分2个可能是负数的连字符

时间:2014-10-22 14:01:23

标签: python regex string split

我有一个Python字符串:

"的 整数 - 整数 "

我想把它变成列表

[ 整数 整数

整数 可以是正数或负数,并由-?[0-9]+

匹配

我怀疑re.split()模块是工作的工具,但是我已经尝试过并且无法找到解决方案。

以下是输入=>的4个示例输出:

  • " 3-7" => [3,7]
  • " 3-7" => [3,-7]
  • " -3-7" => [-3,7]
  • " -3--7" => [-3,-7]

1 个答案:

答案 0 :(得分:7)

使用positive lookbehind assertion

>>> import re
>>> def f(s):
...     return list(map(int, re.split(r'(?<=\d)-', s)))
...
...
>>> f("0-23")
[0, 23]
>>> f("3--7")
[3, -7]
>>> f("-3-7")
[-3, 7]
>>> f("-3--7")
[-3, -7]

仅当模式前面有数字(-)时,模式才匹配\d

如果使用Python 2.x,则可以省略list(..)