伙计们
我不是正则表达式方面的专家,我已经在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.pdf
和abc-def_xyz-1.pdf
。 PDF文件名的这些有效字符可以是a-Z
,A-Z
,_
,-
,.
,0-9
,但不能是{{ 1}},<
等
到目前为止,我已经尝试过:
>
和其他正则表达式表达式,但没有成功。
任何帮助将不胜感激。谢谢。
答案 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