锁定19小时此问题的评论已被禁用,但仍在接受新的答案和其他交互。Learn more。
我正在尝试从几个不同的路径中提取文件名。除了RegEx还捕获安装程序名或文件名前面的.tmp
文件名之外,一切正常。
下面是一个示例列表:
logs = ['C:\\\\Users\\\\Administrator\\\\Desktop\\\\KeyFinderInstaller.exe({tmp}\\\\OCSetupHlp.dll)',
'F:\\\\NOKIA N70\\\\RICAMI\\\\700 ESEMPI\\\\PCStitch 7.0.13 + Keygen(programma per punto croce)\\\\keygen.exe',
'F:\\\\Programmi & Utility Pc\\\\Nero 8 (conversione film & creazione videosuonerie)\\\\keygen.exe',
'C:\\\\Users\\\\user\\\\Desktop\\\\BloodHound-win32-x64\\\\BloodHound-win32-x64\\\\resources\\\\app\\\\Collectors\\\\SharpHound.exe',
'C:\\\\Users\\\\user\\\\Desktop\\\\BloodHound-win32-x64\\\\BloodHound-win32-x64\\\\resources\\\\app\\\\Collectors\\\\DebugBuilds\\\\SharpHound.ps1'
]
RegEx如下:
filename = [re.sub('\\\\','',re.search('\\\\[\w-]+\.\w{3}',log).group()) for log in logs]
输出:
['KeyFinderInstaller.exe', 'keygen.exe', 'keygen.exe', 'SharpHound.exe', 'SharpHound.ps1']
预期输出:
['OCSetupHlp.dll', 'keygen.exe', 'keygen.exe', 'SharpHound.exe', 'SharpHound.ps1']
如您所见,正则表达式返回KeyFinderInstaller.exe
而不是OCSetupHlp.dll
。长话短说,我需要路径最末端的文件名,而不是中间的任何其他文件名。
另外,我想摆脱\\\\
,但显然我的re.sub()
解决方案不起作用。谢谢你的帮助!
1条答案
按热度按时间xxhby3vn1#
对于与您的示例中的条目类似的条目,这是有效的(
.strip()
用于删除右括号)。如果在最后一个文件名后面可能有'junk'(而不仅仅是括号),则以下内容应适用于更多条目: