regex - bash 正则表达式 "find anything between last slash and dot"

标签 regex bash

假设源字符串是一个路径

/home/test/test/文件名.ext

我需要匹配路径中的文件名并在BASH_REMATCH中捕获它

我试了上百个图,真是让人热泪盈眶,最接近的是

/[^/]*.$

但它只匹配 filename.ext

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

但它匹配/文件名。

谢谢

最佳答案

您可以使用:

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

关于regex - bash 正则表达式 "find anything between last slash and dot",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27906134/

相关文章:

json - Bash JSON 字符串到变量中

将音乐从一个目录转换到另一个目录的 Bash 脚本

javascript - 如何使用替换来去掉数字?

PHP 正则表达式不起作用。反斜杠有问题吗?

regex - 如何使用 REGEX(Groovy)选择单词 "She","Shell"和 REGEX = "She"?

单行上的python正则表达式语句

java - [^\d].* 和 ^[^\d].* 在 java 正则表达式中的区别

Bash 脚本和文件名中的空格

bash - 如何从 mpirun 在 gnome-terminal 中运行 gdb?

bash - 如何使用从另一个命令通过管道传输的输出来初始化 bash 数组?