我正在尝试,但我没有达到我的结果。看起来很简单,不知道我在哪里失踪。我需要分开单词
EASTHEMISPHERE ==> EAST HEMISPHERE
WESTHALF ==> WEST HALF
EASTERN ==> EASTERN
WESTERN ==> WESTERN
SELECT REGEXP_REPLACE('EASTERN','(EAST)[(^ERN)]','\1 ') FROM dual
==> EAST RN ..this is wrong.I am missing something
BUT
SELECT REGEXP_REPLACE('EASTSIDE','(EAST)[(^ERN)]','\1 ') FROM dual
==> EAST IDE Why is the S missing
或者有更好的写作方式。
答案 0 :(得分:1)
[(^ERN)]
不执行您想要的操作(see here)。为了排除匹配像这样的字符序列,你需要一个前瞻,比如(?!ERN)
,Oracle使用的正则表达式的POSIX ERE
风格不支持。
但是,您应该可以使用:
SELECT REGEXP_REPLACE('EASTERN','(EAST(ERN)?)(.*)','\1 \3') FROM dual