如何解决Oracle REGEXP_SUBSTR匹配由换行符“ \ n”分隔的单词
我正在尝试使用单个SELECT查询在换行符“ \ n”中将Oracle 10g中的字符串“ SMITH \ nALLEN \ WARD \ nJOnes”拆分。请帮我找到确切的正则表达式。
预期输出:
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',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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。