正则表达式匹配文件路径的最后一部分

标签 regex csv

我有一个 .csv 字符串文件,其中包含某些文件的路径。我想捕获该文件中的所有文件名。

示例数据:

/second/path/to/something-4-5_4.pdf,
/path/to/certain/file.pdf
randomnoise,

我想要捕捉的内容: 斜杠之后并以 .pdf 结尾的所有单词出现,在本例中:

something-4-5_4.pdf
file.pdf

我尝试过的:

\/(.*)\.pdf

Demo

不幸的是,这捕获了/和 .pdf 之间的所有内容,即整个路径。我很难想出让它捕获我想要的部分的条件

最佳答案

要点是 . 模式匹配除换行符之外的任何字符。您需要将模式限制为仅匹配斜杠以外的任何字符。

有多种解决方案,包括

\/([^\/]*\.pdf)
[^\/]*\.pdf
[^\/]*\.pdf$

请参阅regex demo详细信息:

  • \/([^\/]*\.pdf) 匹配 /,然后捕获除 / 之外的一个或多个字符:尽可能多,然后将 .pdf 放入第 1 组
  • [^\/]*\.pdf 只匹配 / 之外的一个或多个字符,尽可能多地匹配 .pdf
  • [^\/]*\.pdf$ 的工作方式与上面相同,但也确保 pdf 位于字符串末尾。

关于正则表达式匹配文件路径的最后一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73882611/

相关文章:

python - 如何从 python 列表生成 CSV 文件,其中每个列表项位于单独的行中

python - 将 pandas 分组列转换为字符串时出错

csv - ArangoDB 将 csv 导入边缘(图表)

powershell - 如何使用Powershell计算文件夹和子文件夹中的文件数量

php - 获取多行的所有 URL

javascript - 正则表达式只返回第一场比赛?

regex - .htaccess 仅允许来自 Chrome、Opera、Mozilla、Safari,从其他重定向

java - java 正则表达式中的错误

r - r : no rows to aggregate [closed]中的错误消息

c# - 正则表达式替换 - 如何用不同的字符串替换多个地方的相同模式?