残念ながら\b
正規表現文字はOracleでは機能しません。回避策として b Oracle 11gの正規表現文字
は、私は次の式を見つけた:
(^|\s|\W)(100100|100101|100102|100103)($|\s|\W)
(参照:The missing \b regular expression special character in Oracle.を)が、テスト用文字列データに:私は一方で
Test string 100100/100101, ABC-DEF, 100102 100103 test data abc100100 100100abc.
値100101
と100103
は、一致していません\b
の場合のように一致させることを期待しています。
これを動作させる方法はありますか?私はOracle 11gを使用しています。
私はどんな助けでも高く評価されます。
EDIT:
私の目標は、すべての一致をタグ付けすることです。私は期待していた出力は次のようになります。
regexp_replace(p_text,'(^|\s|\W)(' || l_ids || ')($|\s|\W)', '\1[ddd]\2[/ddd]\3');
:
l_ids
-|
で区切られたidのリスト、ID缶Test string [ddd]100100[/ddd]/[ddd]100101[/ddd], ABC-DEF, [ddd]100102[/ddd] [ddd]100103[/ddd] test data abc100100 100100abc.
この目的で、私は次のステートメントを使用しています数字、文字、下線、ダッシュを含む
p_text
- 入力テキスト
EDIT 2:上記試験文字列値100100
で
ワードabc100100
ならびに100100abc
に一致させるべきではありません。
異なる行で一致を出力しますか? –
'(^ | \ s | \ W)'は '($ | \ s | \ W)'でなければなりません。さらに '\ s'は' \ W'にすでに含まれています。最初の数字に続く '/'は最初のパターンで消費され、2番目のマッチでは使用できないことに注意してください。先読みなしで回避するのは難しいです。 –
@vkp質問に私の編集を見てください。 – kpater87