Я застрял на регулярном выражении, чтобы поймать основное имя файла в элементах списка.Предположим, у меня есть список filepath:
path_list = ['/Users/buggylines/histogram/offline-deployer-list_b7bacc7fdb-0e0e08077c_GERONIMO-2886_635_histogrambuglines_635.diff',
'/Users/buggylines/histogram/normal.jsp_aa0c2c26dd-90188cc2a4_GERONIMO-4597_1293_histogrambuglines_1293.diff',
'/Users/buggylines/histogram/hbase-env.sh_aa0c2c26dd-90188cc2a4_GERONIMO-4597_1293_histogrambuglines_1293.diff',
'/Users/buggylines/histogram/LICENSE-tesh_cd1ec17e43-4ebc5e8021_GERONIMO-5702_1573_histogrambuglines_785.diff',
'/Users/buggylines/histogram/geronimo_dcce59ae71-8f5c1aa7a1_GERONIMO-5661_1554_histogrambuglines_54.diff',
'/Users/buggylines/histogram/catalina-6.0.18-G678601.jar.sha1_cd1ec17e43-4ebc5e8021_GERONIMO-5702_1573_histogrambuglines_785.diff',
'/Users/buggylines/histogram/geronimo-naming-1.0.xsd_544dee5179-40a2ae1d41_GERONIMO-1027_131_histogrambuglines_131.diff',
'/Users/buggylines/histogram/6.0.18-G678601.README.TXT_cd1ec17e43-4ebc5e8021_GERONIMO-5702_1573_histogrambuglines_785.diff'
]
Я хочу захватить только имя файла, используя regex
.Мне нужен следующий вывод:
expected_output = ['offline-deployer-list',
'normal.jsp',
'hbase-env.sh',
'LICENSE-tesh',
'geronimo',
'catalina-6.0.18-G678601.jar.sha1',
'geronimo-naming-1.0.xsd',
'6.0.18-G678601.README.TXT'
]
Это код, который я написал:
filename = []
for z, path in enumerate(path_list):
pattern = re.search("((?:\w+[-]\w+[-]\w+|\w+[-]\w+|\w+)[.]\w+[_])|(?<=histogram/)(?:\w+[-]\w+[-]\D+[_]|\D+[-]\w+[_])|(?<=histogram\/)(\w+[_])(?<=[_])", path)
pattern = pattern.groups()
filename.append(pattern[0])
Однако вывод не тот, который я ожидал.Это вывод кода:
filename = [None,
'normal.jsp_',
'hbase-env.sh_',
None,
None,
'jar.sha1_',
'0.xsd_',
'README.TXT_']
Мне нужна помощь, чтобы исправить регулярное выражение.Большое вам спасибо.