繁体   English   中英

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

[英]Extract filename from text file using regex

民间,

我不是正则表达式方面的专家,我已经在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文件名,这些有效字符可以是aZAZ_- . 0-9但不包括<>等特殊字符。

到目前为止我尝试过的是:

r'\b(\w+\.pdf)\b'
r'^\\(.+\\)*(.+)\.(.+)\.pdf$'
r'[^A-Za-z0-9_\.pdf]' 
r'[\\/:"*?<>|]+\.pdf'

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

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

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

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

因为它与一个字字符,数字字符,任何组合物相匹配-符号和一个. 符号后跟.pdf

能行吗?

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

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

更新你的新请求之间没有空隙存在<FILENAME>whatever.pdf

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM