文件名与Python正则表达式匹配

时间:2019-03-08 07:07:04

标签: python regex python-3.x

我有一个从电子邮件中删除的文本文件,其中包含1个附件/邮件。附件以不同的名称出现,格式完全不同,例如:

filename="John_wheeler 11041997 resume.pdf";
filename="Kujal_newResume(1).pdf"; 
filename=JohnKrasinski_Resume.pdf

我的问题是:有没有办法找到一个正则表达式模式,该模式将从filename=开始搜索,直到点字符(与文件扩展名分开)为止?下一个任务是获取文件扩展名,但我现在可以保留。请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

您可以尝试以下模式:filename="?([^.]+)

假定点将文件名和扩展名分开。

说明:

filename="?-从字面上匹配filename=,tehn匹配0或1个撇号"

([^.]+)-匹配不是点的一个或多个字符(匹配所有字符直到点)并将其存储在捕获组中

您想要的文件名将存储在捕获组中。

Demo

附加:要捕获文件扩展名,可以使用以下模式:filename="?([^.]+)\.([^";]+)

这里的其他内容是\.([^";]+):用\.从字面上匹配点。然后,它将";以外的一个或多个字符与模式[^";]+匹配,并将其存储在第二个捕获组中。

Another demo

答案 1 :(得分:0)

以下内容如何:

(?:filename=)([^\.]*)\.(\w*)

此REGEX返回包含您感兴趣的不同元素的不同组。

答案 2 :(得分:0)

我不确定您期望的输出。但这可能会有所帮助。 RegexDemo

(?<=filename=)[\"]?(\w.*[.].*)(?<=\w)[\"]?

或者如果您想忽略文件扩展名:

(?<=filename=)[\"]?(\w.*)[\.]