[英]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.pdf
和abc-def_xyz-1.pdf
。 对于PDF文件名,这些有效字符可以是aZ
, AZ
, _
, -
.
, 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.