从 bash 中的正则表达式捕获组

Che*_*tah 5 regex bash

我有以下字符串/path/to/my-jar-1.0.jar,我正在尝试为其编写 bash 正则表达式以提取my-jar.

现在我相信以下正则表达式会起作用:([^\/]*?)-\d但我不知道如何让 bash 运行它。

以下:echo '/path/to/my-jar-1.0.jar' | grep -Po '([^\/]*?)-\d'捕获my-jar-1

anu*_*ava 5

在 BASH 中,您可以执行以下操作:

s='/path/to/my-jar-1.0.jar'

[[ $s =~ .*/([^/[:digit:]]+)-[[:digit:]] ]] && echo "${BASH_REMATCH[1]}"

my-jar
Run Code Online (Sandbox Code Playgroud)

这里"${BASH_REMATCH[1]}"将打印捕获的组 #1,它是 first 中的表达式(...)