我有一个由字符串组成的.csv文件,其中包含某些文件的路径。我想捕获该文件中的所有文件名。
示例数据:
/second/path/to/something-4-5_4.pdf,
/path/to/certain/file.pdf
randomnoise,
我想要捕捉的内容:所有出现在斜线后并以.pdf结尾的单词,在这种情况下:
something-4-5_4.pdf
file.pdf
我尝试过的:
/(.*).pdf
演示
不幸的是,这捕获了/和.pdf之间的所有内容,整个路径。我很难想出让它抓住我想要的的条件
关键是.
模式匹配换行符以外的任何字符。您需要将模式限制为只匹配除斜杠之外的任何字符。
有几种解决方案,包括
/([^/]*.pdf)
[^/]*.pdf
[^/]*.pdf$
请参阅regex演示详细信息:
/([^/]*.pdf)
匹配/
,然后尽可能多地捕获除/
之外的一个或多个字符,然后将.pdf
放入组1[^/]*.pdf
只是尽可能多地匹配除/
之外的一个或多个字符,然后匹配.pdf
[^/]*.pdf$
的工作原理与上述相同,但也确保pdf
位于字符串的末尾