我想将分层字符串提取为多个匹配结果。
例如:
F 21 W 2121 /02
[A-Z]{1} [0-9]{1,n} [A-Z]{1} [0-9]{1,n} /{1}[0-9]{1,n}
结果:
F21W2121/02 -> F, F21, F21W, F21W2121, F21W2121/02
G06Q30/00 -> G, G06, G06Q, G06Q30, G06Q30/00
解析这个有什么好主意吗?我被困住了。
答案 0 :(得分:1)
我想你想要这样的东西,
^((((([A-Z])\d+)[A-Z])\d+)/\d+)$
>>> import re
>>> s = "F21W2121/02"
>>> re.findall(r'^((((([A-Z])\d+)[A-Z])\d+)/\d+)$', s)
[('F21W2121/02', 'F21W2121', 'F21W', 'F21', 'F')]
>>> re.findall(r'^((((([A-Z])\d+)[A-Z])\d+)/\d+)$', "G06Q30/00")
[('G06Q30/00', 'G06Q30', 'G06Q', 'G06', 'G')]
答案 1 :(得分:1)
除非我遗漏了什么:
>>> import re
>>> ptrn = '((((([A-Z])[0-9]+)[A-Z])[0-9]+)/[0-9]+)'
>>> re.match(ptrn, 'G06Q30/00').groups()
('G06Q30/00', 'G06Q30', 'G06Q', 'G06', 'G')
>>> re.match(ptrn, 'F21W2121/02').groups()
('F21W2121/02', 'F21W2121', 'F21W', 'F21', 'F')
你可以简单地反转元组以获得长度顺序的匹配。