查找“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。 –