oracle - Oracle REGEXP_SUBSTR 匹配由换行符“\n”分隔的单词
问题描述
我正在尝试使用单个 SELECT 查询将 Oracle 10g 中的字符串 "SMITH\nALLEN\WARD\nJONES" 通过换行符 "\n" 拆分。请帮我找到确切的正则表达式。
预期输出:
1 SMITH
2 ALLEN\WARD
3 JONES
我尝试了表达式“[^\n]+”,但我得到了以下结果,它也考虑了“\”。我希望表达式只考虑“\n”。
询问:
SELECT REGEXP_SUBSTR ('SMITH\nALLEN\WARD\nJONES',
'[^\n]+',
1,
LEVEL)
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('SMITH\nALLEN\WARD\nJONES',
'[^\n]+',
1,
LEVEL) IS NOT NULL;
结果:
1 SMITH
2 ALLEN
3 WARD
4 JONES
解决方案
在[]
这些字符中,字符是单独匹配的,\n
无论如何都看不到特殊字符甚至是一系列字符 - 它单独匹配这些字符中的任何一个;所以即使更改为[^\\n]
也无济于事。
您可以使用此表单,它也返回空元素:
select regexp_substr('SMITH\nALLEN\WARD\nJONES', '(.*?)(\\n|$)', 1, level, 'm', 1)
from dual
connect by level <= regexp_count('SMITH\nALLEN\WARD\nJONES', '\\n') + 1;
REGEXP_SUBSTR('SMITH\NAL
------------------------
SMITH
ALLEN\WARD
JONES
推荐阅读
- flutter - 计算列表中的元素
- javascript - 重命名列表的每个对象中的字段
- asp.net - 非 root 用户无法在 docker 中启动 w3svc 服务
- java - 数据如何插入 H2 数据库?
- python - 如何过滤 Dataframe 以在 Pyspark 中将 True 或 False 返回到特定条件?
- r - 获取在 R 中不同时间点从各自集群中“退出”的 ID 的百分比
- c# - ON DELETE NO ACTION时如何在EF Core中删除表中的行?
- python - 修剪没有到任何目标节点集的路径的图节点
- javascript - 放入传奇后调用redux select是否等待商店更新?
- javascript - 我做了一张卡片,我想循环整个卡片组件