Sql 在正则表达式中展望未来

Sql 在正则表达式中展望未来,sql,regex,oracle,oracle11g,lookahead,Sql,Regex,Oracle,Oracle11g,Lookahead,在Oracle的正则表达式(如)中是否存在诸如“向前看”、“向后看”之类的内容? 仅当“ef”之前是“ab”而不是“cd”时才查找“ef” 如果before是ab,则before不能是cd,因此您可以执行以下操作: REGEXP_REPLACE( text, '(ab)ef', '\1XX' ) 或 或 如果前面的ef是以下字符a或b或2([ab2]){2,5} 或 或 仅当[efg]{4,6}的前面是[ab2]{2,5}时才寻找[efg]{4,6} 或 或 仅当“ef”之前是“ab”而不是“

在Oracle的正则表达式(如
)中是否存在诸如“向前看”、“向后看”之类的内容?
仅当“ef”之前是“ab”而不是“cd”时才查找“ef”

如果before是
ab
,则before不能是
cd
,因此您可以执行以下操作:

REGEXP_REPLACE( text, '(ab)ef', '\1XX' )

如果前面的ef是以下字符a或b或2
([ab2]){2,5}

仅当[efg]{4,6}的前面是[ab2]{2,5}时才寻找[efg]{4,6}

仅当“ef”之前是“ab”而不是“cd”时才查找“ef”

如果before是
ab
,则before不能是
cd
,因此您可以执行以下操作:

REGEXP_REPLACE( text, '(ab)ef', '\1XX' )

如果前面的ef是以下字符a或b或2
([ab2]){2,5}

仅当[efg]{4,6}的前面是[ab2]{2,5}时才寻找[efg]{4,6}


如果它在
ab
之前,则它不能在
cd
之前。在它是ab而不是cd之前,它不支持lookarounds。如果它在
ab
之前,则它不能在
cd
之前。在它是ab而不是cd之前,它不支持lookarounds。您确定这是Oracle吗?REGEXP_SUBSTR最多有5个参数。此外,如果[efg]{4,6}之前是[ab2]{2,5}@Kenny Oracle11G(您在问题中标记了它),那么只查找[efg]{4,6}如何?需要一个额外的参数-要返回的子组的索引。你确定这是甲骨文吗?REGEXP_SUBSTR最多有5个参数。此外,如果[efg]{4,6}之前是[ab2]{2,5}@Kenny Oracle11G(您在问题中标记了它),那么只查找[efg]{4,6}如何?需要一个额外的参数-要返回的子组的索引。见
REGEXP_INSTR( text, 'abef', 1, 1, 1, NULL ) - LENGTH( 'ef' )
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' )
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}' ) )