查找「EF」只有之前,它是「AB」,而不是「CD」
如果說之前是ab
那麼它不能cd
之前,所以你可以這樣做:
REGEXP_REPLACE(text, '(ab)ef', '\1XX')
或
REGEXP_SUBSTR(text, 'ab(ef)', 1, 1, NULL, 1)
或
REGEXP_INSTR(text, 'abef', 1, 1, 1, NULL) - LENGTH('ef')
查找上LY EF如果之前,它是下列字符的2至5倍a或b或2 ([ab2]){2,5}
REGEXP_REPLACE(ly, '([ab2]{2,5})ef', '\1XX')
或
REGEXP_SUBSTR(ly, '[ab2]{2,5}(ef)', 1, 1, NULL, 1)
或
REGEXP_INSTR(ly, '[ab2]{2,5}ef', 1, 1, 1, NULL) - LENGTH('ef')
尋找[EFG] {4,6-}僅當之前,它是[AB 2] {2,5-}
REGEXP_REPLACE(ly, '([ab2]{2,5})[efg]{4,6}', '\1XX')
或
REGEXP_SUBSTR(ly, '[ab2]{2,5}([efg]{4,6})', 1, 1, NULL, 1)
或
REGEXP_INSTR(ly, '[efg]{4,6}', REGEXP_INSTR(ly, '[ab2]{2,5}[efg]{4,6}'))
如果它在'ab'之前,那麼它不能在'cd'之前。 – MT0
_before IT是ab而不是cd_。 – Kenny
[Oracle正則表達式的味道是POSIX](https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#i1007663),它不支持lookarounds。 –