是否可以在 VTL 解析器中执行基于正则表达式的字符串替换?

Is it possible to perform regex based string replacement inside a VTL resolver?

我想定义一个响应映射模板如下:

#set( $postIds = [] )
#foreach( $item in $ctx.result.items )
    #if( !$util.isNull($item))
        $util.qr($postIds.add($item.SK.replace("^([0-9]){1,}-", "")))
    #end
#end

{
    "items": $utils.toJson($postIds),
    #if( ${context.result.nextToken} )
    "nextToken": "${context.result.nextToken}",
    #end
}

目标是删除每个项目的 SK 属性 开头的时间戳和后跟“-”字符。

我检查过正则表达式是正确的,但这似乎不起作用,因为开头的数字没有被删除。

也尝试过 ...replace(/^([0-9]){1,}-/", "")

如果我没记错的话,文档某处说所有 Java 字符串方法都可用。

我在这里做错了什么?

要替换 regex 使用 replaceAll

Replaces each substring of this string that matches the given regular expression with the given replacement.

replaceFirst

确保 SK 是字符串或使用 toString()