我有一个 .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 demo 。 详细信息:
\/([^\/]*\.pdf)
匹配/
,然后捕获除/
之外的一个或多个字符:尽可能多,然后将.pdf
放入第 1 组[^\/]*\.pdf
只匹配/
之外的一个或多个字符,尽可能多地匹配.pdf
[^\/]*\.pdf$
的工作方式与上面相同,但也确保pdf
位于字符串末尾。
关于正则表达式匹配文件路径的最后一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73882611/