源字符串是路径,比如说
/家/测试/检验/ filename
。分机
我需要匹配路径中的filename
并在BASH_REMATCH中捕获它
我已经尝试了数百个数字,它真的让我的眼睛流水,最接近的是
/[^/]*.$
但它只匹配filename.ext
和\/([a-zA-Z0-9]+)\.
但匹配/文件名。
谢谢
答案 0 :(得分:3)
您可以使用:
s='/home/test/test/filename.ext'
[[ "$s" =~ /([^./]+)\. ]] && echo "${BASH_REMATCH[1]}"
filename
答案 1 :(得分:0)
你应该使用结束锚
([^/]+)\.[^/.]+$
然后文件名在第1组中。