sql - 在最后一个斜线后获得 5 个字符
问题描述
我需要最后一个斜杠后的前 5 个字符。我可以处理在斜线后获取所有符号,但不能只取其中的前 5 个。
REGEX_SUBSTR('people/capital/base/flagedbyloggers','[^/]*$')
有了[^/]*$
,我得到flagedbyloggers
,但我只需要flaged
,前 5 个符号。
使用[^/]{5}$
,我得到ggers
,这是最后一个斜杠后的 5 个最后一个符号,但我需要 flaged
,最后一个斜杠后的前 5 个符号。
有时最后一个斜杠后面的字符串可能更短,所以它必须使用少于 5 个字符,例如people/capital/base/no
应该只返回no
.
环境是ORACLE数据库。我使用在线工具https://regexr.com/得到的结果相同。
解决方案
您可以匹配直到最后一次出现/
带有捕获组和{1,6}
要匹配的量词的 ano
或flaged
请注意,flaged
后面是 6 个字符而不是 5 个字符/
此页面显示如何使用REGEXP_SUBSTR或REGEXP_REPLACE从匹配中获取捕获组。
^.*/([^/]{1,6})[^/]*$
解释
^.*/
确保匹配最后一次出现的/
(
捕获组 1[^/]{1,6}
匹配 6 次以外的任何字符/
)
关闭组 1[^/]*
匹配 0+ 次出现的任何字符,除了/
$
字符串结束
查看正则表达式演示
推荐阅读
- javascript - 如何防止JS中的多个函数调用
- javascript - 尝试在旧版本的 Internet Explorer 中输入输入类型文本时阻止重新加载页面
- mysql - MySQL - 在两列中过滤具有完全相同十进制值的行
- c# - asp.net ListBox 不遵循 Enabled=false;
- mysql - 如何将 latin1_swedish_ci 转换为 utf8-general-ci
- java - 使用 Volley 在 Android Studio 中具有 id 和名称的 Spinner
- java - 当给定查询在左连接中有内部查询时如何获取列名和列标签
- json - 无法从 sql server 数据库中的 Json 字符串获取数据
- android - Kotlin:尝试使用 Kotlin 打印多行
- rest - 如何在中间件路由中应用角色