トップページに戻る    次のJavaストアドプロシージャのサンプルへ    前のJavaストアドプロシージャのサンプルへ

Javaストアドプロシージャ2 正規表現の先読み

SQL

exec dbms_java.dropjava('JavaRegexSource');
exec dbms_java.dropjava('JavaRegex');

CREATE or replace JAVA SOURCE NAMED JavaRegexSource as
public class JavaRegex {
    public static String execRegex(String hiki){
        return hiki.replaceAll("a(?=[bd])","");
    }
}
/

CREATE OR REPLACE Function ExecJavaRegex(hiki varchar2) return varchar2
AS LANGUAGE java NAME 'JavaRegex.execRegex(java.lang.String) return java.lang.String';
/

col res1 for a10
col res2 for a10
col res3 for a10

select ExecJavaRegex('abada') as res1,
       ExecJavaRegex('acade') as res2,
       ExecJavaRegex('bdabd') as res3
from dual;

RES1  RES2  RES3
----  ----  ----
bda   acde  bdbd


解説

Oracle11gのRegExp_Replace関数の正規表現ですら、先読みが使えませんが、
Javaストアドプロシージャなら正規表現で先読みが使えるのです。

Pattern (Java 2 プラットフォーム SE v1.4.0)
@IT:Java TIPS -- Javaで正規表現を活用する(java.util.regexパッケージ)