1

我正在尝试,但我没有达到我的结果。它看起来很简单,不知道我错过了什么。我需要分开单词

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

或者有没有更好的写法。

4

1 回答 1

1
[(^ERN)]

不做你打算做的事情(见这里)。要排除匹配这样的字符序列,您需要一个前瞻,如, Oracle 使用的正则表达式(?!ERN)的风格不支持这些。POSIX ERE

但是,您应该能够使用:

SELECT REGEXP_REPLACE('EASTERN','(EAST(ERN)?)(.*)','\1 \3') FROM dual
于 2013-04-24T22:38:08.290 回答