【发布时间】:2018-01-10 10:41:40
【问题描述】:
我有一个这样的字符串:docker login -u username -p password docker-registry-url。
我在 Groovy 脚本中使用execute 执行命令。出于调试目的,我在执行前打印了命令,但由于它包含敏感数据,所以我混淆了用户名和密码。
def printableCmd = cmd.toString()
def m = printableCmd =~ /(?:.+) -u (.+) -p (.+) (?:.+)/
if (m.matches() && m[0].size() >= 3) {
printableCmd = m[0][-1..-2].inject(m[0][0]) { acc, val -> acc.replaceAll(val, "***") }
}
上述工作按预期工作并打印docker login -u *** -p *** docker-registry-url,但我想知道是否有更惯用的方法来做到这一点。请注意,我不想删除捕获的组,只需将它们替换为星号,从而非常清楚该命令没有错误,但出于安全目的进行了混淆。
【问题讨论】:
标签: java regex groovy regex-group