Presto 或 SQL 中有没有办法仅在最后一个反斜杠前面有字符时删除它,否则保留它?
我在 presto 中使用 regexp_replace。例如,如果 x = '/' 表达式应返回 '/' 如果 x = 'beta/alpha/' 它应该返回 'beta/alpha'
我正在使用 select regexp_replace ([表达式], '[\/]$', '')
。
当只有一个反斜杠时,这将返回一个空字符串;如果表达式在反斜杠之前有一些字符,则从字符串末尾删除反斜杠。
最佳答案
你可以使用
regexp_replace([expression], '([^/])/$', '$1')
-- or
regexp_replace([expression], '(?<=[^/])/$', '')
请参阅regex demo .
详细信息
-
([^/])/$
- 匹配并捕获除/
之外的任何字符进入组 1(使用([^/])
模式,替换模式中的$1
是引用组 1 值的替换反向引用),然后匹配/
在字符串末尾 ($
) -
(?<=[^/])/$
匹配/
仅当紧邻左侧的字符不是/
时才出现在字符串末尾char(而不是字符串的开头)。
关于mysql - 仅当最后一个斜杠前面有字符时,才在 presto 中使用 regexp 删除最后一个斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66461623/