mysql - 仅当最后一个斜杠前面有字符时,才在 presto 中使用 regexp 删除最后一个斜杠

标签 mysql regex presto trino

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/

相关文章:

javascript - 如何将重复的 'slash' 替换为字符串中的单个斜杠?

MYSQL:在多行选择中使用 COUNT 和 SUM 函数的问题

mysql - 如何在 Debian 10 上的 Mysql 8.0 中启用远程连接

javascript - 从列表中选择用户

正则表达式替换 Markdown 文件的代码块标记中的所有空格

javascript - 使用此正则表达式,为什么它只捕获最后一个列表项

MySql存储函数: Not works

java - Spark没有注册输出操作,所以没有什么可执行的,但我正在写入文件

python - 如何在 PySpark 中连接到 Presto JDBC?

hive - 使用 Amazon Athena 和 Open JSONx Serde 处理重复 key