在Redshift中将驼峰式命名转换为下划线命名的正则表达式

3
我正在尝试使用 SQL(AWS Redshift)中的正则表达式将 CamelCase 转换为下划线分隔或分隔符分隔。所以像这样:regexp_replace(MyString, '([A-Z]+)', '-$1'),但我需要指定不在字符串开头。目前,MyString 变成了 -my-string 而不是 my-string。如何实现?

这对于所有大写字符串都失败,但对于我所提出的问题完全有效。 - saud
1个回答

4

匹配并捕获大写字母之前的任何字符,并在替换模式中使用另一个反向引用进行恢复:

regexp_replace(MyString, '(.)([A-Z]+)', '$1-$2')
                          ^^^            ^^^^^

查看正则表达式演示

我知道你在正则表达式替换后已经LOWER了结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接