我有一个从电子邮件中删除的文本文件,其中包含1个附件/邮件。附件以不同的名称出现,格式完全不同,例如:
filename="John_wheeler 11041997 resume.pdf";
filename="Kujal_newResume(1).pdf";
filename=JohnKrasinski_Resume.pdf
我的问题是:有没有办法找到一个正则表达式模式,该模式将从filename=
开始搜索,直到点字符(与文件扩展名分开)为止?下一个任务是获取文件扩展名,但我现在可以保留。请帮我解决这个问题。
答案 0 :(得分:1)
您可以尝试以下模式:filename="?([^.]+)
假定点将文件名和扩展名分开。
说明:
filename="?
-从字面上匹配filename=
,tehn匹配0或1个撇号"
([^.]+)
-匹配不是点的一个或多个字符(匹配所有字符直到点)并将其存储在捕获组中
您想要的文件名将存储在捕获组中。
附加:要捕获文件扩展名,可以使用以下模式:filename="?([^.]+)\.([^";]+)
这里的其他内容是\.([^";]+)
:用\.
从字面上匹配点。然后,它将"
或;
以外的一个或多个字符与模式[^";]+
匹配,并将其存储在第二个捕获组中。
答案 1 :(得分:0)
以下内容如何:
(?:filename=)([^\.]*)\.(\w*)
此REGEX返回包含您感兴趣的不同元素的不同组。
答案 2 :(得分:0)
我不确定您期望的输出。但这可能会有所帮助。 RegexDemo
(?<=filename=)[\"]?(\w.*[.].*)(?<=\w)[\"]?
或者如果您想忽略文件扩展名:
(?<=filename=)[\"]?(\w.*)[\.]