簡體   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