bash 正则表达式 "find anything between last slash and dot"
bash regexp "find anything between last slash and dot"
源字符串是一个路径,比方说
/home/test/test/filename
.ext
我需要从路径匹配 filename
并在 BASH_REMATCH
中捕获它
我试了上百个数字,真是泪流满面,最接近的是
/[^/]*.$
但它只匹配 filename.ext
和\/([a-zA-Z0-9]+)\.
但它匹配 /filename。
谢谢
您可以使用:
s='/home/test/test/filename.ext'
[[ "$s" =~ /([^./]+)\. ]] && echo "${BASH_REMATCH[1]}"
filename
你应该使用结束锚
([^/]+)\.[^/.]+$
然后文件名在第 1 组中。
源字符串是一个路径,比方说
/home/test/test/filename
.ext
我需要从路径匹配 filename
并在 BASH_REMATCH
我试了上百个数字,真是泪流满面,最接近的是
/[^/]*.$
但它只匹配 filename.ext
和\/([a-zA-Z0-9]+)\.
但它匹配 /filename。
谢谢
您可以使用:
s='/home/test/test/filename.ext'
[[ "$s" =~ /([^./]+)\. ]] && echo "${BASH_REMATCH[1]}"
filename
你应该使用结束锚
([^/]+)\.[^/.]+$
然后文件名在第 1 组中。