我想根据模式将字符串拆分为单独的列表。假设我让绳子看起来像这样
string = '1.e4 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 1-1 1.c2 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 Rxd8 11.Nxe5 Nxe5 1-0 1.b5 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 Rxd8 11.Nxe5 Nxe5 12.Nb5 1/2-1/2'
模式应该将1.
识别为开始,并在另一个1.
之前结束
[1.e4 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 1-1]
[1.c2 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 Rxd8 11.Nxe5 Nxe5 1-0]
[1.b5 d6 2.d4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Be2 Nbd7 6.O-O O-O 7.e5 dxe5 8.dxe5 Ng4 9.e6 Nde5 10.Qxd8 Rxd8 11.Nxe5 Nxe5 12.Nb5 1/2-1/2]
我是这样做的
lists=[]
reg = '^\\1\\.'
for i in string :
re.match(reg, i)
lists.extend[i]
这也很好用
我将在这里使用
re.findall
和模式.*?\s+\d+(?:/\d+)?-\d+(?:/\d+)?
:这张照片是:
下面是对所使用的正则表达式模式的简要说明:
相关问题 更多 >
编程相关推荐