[英]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.