Я использую регулярные выражения Oracle и хочу сопоставить некоторую строку, затем что-то отличное от другой строки, а затем от другой строки.
Например, я хочу сопоставить «testZZZtest» и «testAAAtest», но ни «testABCtest», ни «test bla bla ABC bla bla test».
Я пробую шаблон 'test [^ ABC] * test "как в:
select regexp_instr('bla bla bla testAZZtest bla bla bla', 'test[^ABC]*test') from dual
но это не работает (он отвечает 0, что означает, что он не совпадает). Кажется, что «A» в «AZZ» является проблемой, потому что если я попытаюсь:
select regexp_instr('bla bla bla testZZZtest bla bla bla', 'test[^ABC]*test') from dual
Я получил ответ 13 - позиция testZZZtest в исходной строке.
Конечно, я что-то упускаю, но не могу найти проблему. Искал некоторую информацию о негативном прогнозе, но я получил синтаксис, который не работает в Oracle:
http://www.regular -expressions.info / lookaround.html