regex - 正则表达式随后捕获字符之前的第一个单词 - oracle
问题描述
我如何捕获 = 符号之前的单词,URL 中有另一个我不想捕获的等号
SELECT
REGEXP_SUBSTR('TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3',
'([^|]+)=', 1,1,NULL,1) "TType"
FROM DUAL;
从上面的字符串TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3
我只想要TType,Status,URL,day
注意:字符串有一个管道分隔符 | 对于参数
解决方案
您可以使用
SELECT
TRIM(',' FROM REGEXP_REPLACE('TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3',
'=[^|]+($|\|)', ',')) "TType"
FROM DUAL
将REGEXP_REPLACE
查找并用逗号替换所有匹配的=[^|]+($|\|)
模式
=
- 一个=
字符[^|]+
- 一个或多个字符|
($|\|)
- 字符串结尾或|
.
查看在线演示。
推荐阅读
- mysql - Sequelize - 使用 select 而不是 tableName 定义模型
- css - 是否可以在列布局中使所有弹性项目具有相同的宽度?
- aem - ES6 语法在 AEM 6.0 中的缩小错误
- android - gradle 同步过程完成后的渲染问题
- java - 如何在使用 maven 构建的 spring boot 2 java 应用程序中使用 groovy 解释(带有 spring-aop 注释)?
- excel - 将屏幕提示添加到形状
- c# - Unity C#,对象在错误的位置产生
- java - 将一个人的记录从一个数据库复制到另一个数据库 - Oracle 和 Java
- typescript - 如何将 Kendo UI 类型导入 TypeScript 模块
- c++ - 分配给浮点数的整体文字除法 - 为什么结果错误?