您是否可以使用类似于sed的java regex模式/match/group来执行regex匹配组?

如果我有像

test-artifact-201251-balbal-0.1-SNAPSHOT.jar

如何使用sed来获得如下结果:

test-artifact-0.1-SNASHOT.jar

我想知道sed是否允许您执行java正则表达式之类的操作,您定义的模式如下:

([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)([.]*SNAPSHOT.jar)

然后你可以得到一个数组的结果,如:

test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar

推荐答案

必须将括号转义才能对表达式进行分组:

\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)

并将其与\1\2等一起使用.


EDIT:还要注意SNAPSHOT之前的[.]不匹配.括号.内为文字.应该是[0-9.-]*

Linux相关问答推荐

GO:当使用NewManager调用创建cgroup时,权限被拒绝

是否有例外情况需要在.gitconfig中使用?

为什么Read()和cin.get()对输出缓冲区的影响不同?

Git - 打印以不同编码混合的文件

在 bash 中使用 tee 时如何返回错误代码

如何使用 Golang 清除终端中的最后一行

c++进程状态中的+是什么意思

用于替换 struct 文档中文本的 Bash 脚本

如何为命令的所有选项启用无密码 sudo?

如何安装脚本以从命令行的任何位置运行?

如何判断 Ubuntu 12.04 LTS 上是否安装了多个版本的 PHP?

在 Python 上模拟鼠标点击

如何在 Linux 中创建高分辨率计时器来测量程序性能?

一个进程如何拦截Linux上另一个进程的stdout和stderr?

如何使用 Ansible 等待服务器重启?

Linux内核列表中的WRITE_ONCE

用于 ssh 的类似 teamviewer 的工具?

将 jiffies 转换为毫秒

ngrok 如何在防火墙后工作?

在 shell 脚本的 for 循环中迭代行而不是单词