使用正则表达式从文本文件中提取文件名

时间:2018-11-18 20:39:58

标签: python regex regex-group

伙计们

我不是正则表达式方面的专家,我已经在Google上搜索了我的问题,但没有找到解决方案。如果有人找到另一个有相同问题的SO帖子,请随时指向该帖子。

问题:

我得到了一个文本文件,其中许多字符都是html标签。这些文本文件可能包含PDF文件名,如下所示。我只想提取所有扩展名为.pdf的PDF文件名。请注意,这些PDF文件名不仅可以位于<FILENAME>前缀之后,还可以位于文本文档字符串中的任何位置。

示例文本:

Example 1: <FILENAME>any_valid_characters_filename.pdf
Example 2: hello this is a good file abc-def_xyz-1.pdf

请注意,<FILENAME>是我的文本文档中的有效(html)标记。我要提取文件名any_valid_characters_filename.pdfabc-def_xyz-1.pdf。 PDF文件名的这些有效字符可以是a-ZA-Z_-.0-9,但不能是{{ 1}},<

到目前为止,我已经尝试过:

>

和其他正则表达式表达式,但没有成功。

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

我认为以下表达式涵盖了您提到的所有内容:

r"([\w\d\-.]+\.pdf)"

由于它与任何组成匹配,包括单词字符,数字字符,-符号和.符号,后跟.pdf

答案 1 :(得分:1)

这可以吗?

\b[^\s<>]*?.pdf\b

它适用于您的示例:https://regexr.com/43b8q

为您的新请求更新<FILENAME>whatever.pdf之间没有空格:

使用:\b(?<![<>][\s]|\w)[\w-]*?.pdf\b

示例:https://regex101.com/r/O3kpQ4/2/