regex 从文本中提取具有特定路径和扩展名的多个文件名

9nvpjoqh  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(117)

给定一个示例文本:

sometext /uploads/01/03/file.jpgmoretext and then some /uploads/44/93/anotherfile.png and yet /uploads/03/26/somefile.jpg

但这是从第一个/上传到最后的.jpg提取我想提取3个文件...我怎么说“关闭扩展”?
我尝试了“/uploads.*(.jpg)”的正则表达式|jpeg格式|巴布亚新几内亚|gif)”预期3个结果,但得到一个长结果。

9jyewag0

9jyewag01#

因为你的.*是贪婪的,它会匹配到最后一次出现。添加一个?使它不贪婪会有帮助。你应该在OR组中的每个扩展部分添加点,以避免错误的结果

/uploads.*?(\.jpg|\.jpeg|\.png|\.gif)

演示:regex101

**编辑:**一个更干净的正则表达式来匹配OP评论中的多个扩展名情况`:

\/uploads.*?(?:\.jpg|\.jpeg|\.png|\.gif)+

演示:regex101

ukdjmx9f

ukdjmx9f2#

您可以使用\S*?以非贪婪的方式只匹配非空格字符,并将模式缩短为前面带有点\.(?:jpe?g|png|gif)的交替

/uploads\S*?\.(?:jpe?g|png|gif)

Regex demo

相关问题