bash regex“在最后一个斜线和点之间找到任何东西”

时间:2015-01-12 16:06:42

标签: regex bash

源字符串是路径,比如说

/家/测试/检验/ filename。分机

我需要匹配路径中的filename并在BASH_REMATCH中捕获它

我已经尝试了数百个数字,它真的让我的眼睛流水,最接近的是

/[^/]*.$

但它只匹配filename.ext

\/([a-zA-Z0-9]+)\.

但匹配/文件名。

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用:

s='/home/test/test/filename.ext'
[[ "$s" =~ /([^./]+)\. ]] && echo "${BASH_REMATCH[1]}"
filename

答案 1 :(得分:0)

你应该使用结束锚

([^/]+)\.[^/.]+$  

然后文件名在第1组中。