私はOracle Regular Expressionを使用していますが、いくつかの文字列を一致させたい場合は、別の文字列と別の文字列を別の文字列に一致させたいと思います。Regex to match test <not ABC> test
たとえば、「testZZZtest」と「testAAAestest」は一致させたいが、「testABCtest」も「test bla bla ABC bla bla test」も一致させたくない。以下のように
私はパターンをしようとしている '[^ ABC] *テストのテスト':
select regexp_instr('bla bla bla testAZZtest bla bla bla', 'test[^ABC]*test') from dual
が、それは仕事をdoes't(それは答える0、それが一致しないこと)。私がしようとするので、「AZZ」内の「A」は、問題となっているようだ:
select regexp_instr('bla bla bla testZZZtest bla bla bla', 'test[^ABC]*test') from dual
私は、元の文字列のtestZZZtestの位置で答え13を得ました。
確かに私は何か不足していますが、私は問題を見つけることができません。否定先読みに関するいくつかの情報を探したが、私は、Oracleで動作しない構文を得た:
http://www.regular-expressions.info/lookaround.html
Oracleは独自の正規表現構文を発明しない限り、 '[^ ...]'は否定文字グループです。つまり、省略記号の代わりに指定されていない1文字と一致します。 – delnan