我有以下内容
lvc_direccion:=‘BL 93 IN 4 AP 401 PABLO VI II SEC’;lvc_Inmueble:= REGEXP_SUBSTR(lvc_direccion,’(CONJ | ADL | ALD | ALM | APO | ATR | CAS | CEN | CLJ | CON | ESQ | FCA | TER | URB | VRD | AG | CA | CC | CD | ED |。 ..
declare lvc_direccion varchar2(200); lvc_Inmueble varchar2(2000); begin lvc_direccion := 'BL 93 IN 4 AP 401 PABLO VI II SEC'; lvc_Inmueble := REGEXP_SUBSTR (lvc_direccion, '(CONJ|ADL|ALD|ALM|APO|ATR|CAS|CEN|CLJ|CON|ESQ|FCA|TER|URB|VRD|AG|CA|CC|CD|ED|EX|HC|IN|OF|PJ|UN|UR|ZF|C){1}.*?((TERPLN|SUITE|AGP|ALM|CEL|MLL|PAR|POR|POS|PRJ|SEC|AD|AL|AP|BG|BL|CA|CS|DP|DS|ED|EN|ET|GJ|GS|GT|HG|LC|LM|LT|MD|MJ|MN|MZ|OF|PA|PD|PH|PL|PN|PQ|PS|PT|PW|RP|SA|SC|SD|SL|SS|ST|TO|TZ|ZN|P))'); dbms_output.put_line( lvc_Inmueble); end;
输出:4 AP
行结束char是不必要的
添加字符串结尾 $ 作为正则表达式的类型名称后缀之一:
$
DECLARE lvc_direccion varchar2(200) := 'BL 93 IN 4 AP 401 PABLO VI II SEC'; lvc_Inmueble varchar2(2000); p_prefixes VARCHAR2(500) := 'CONJ|ADL|ALD|ALM|APO|ATR|CAS|CEN|CLJ|CON|ESQ|FCA|TER|URB|VRD|AG|CA|CC|CD|ED|EX|HC|IN|OF|PJ|UN|UR|ZF|C'; p_suffixes VARCHAR2(500) := 'TERPLN|SUITE|AGP|ALM|CEL|MLL|PAR|POR|POS|PRJ|SEC|AD|AL|AP|BG|BL|CA|CS|DP|DS|ED|EN|ET|GJ|GS|GT|HG|LC|LM|LT|MD|MJ|MN|MZ|OF|PA|PD|PH|PL|PN|PQ|PS|PT|PW|RP|SA|SC|SD|SL|SS|ST|TO|TZ|ZN|P'; p_regexp VARCHAR2(1100) := '(' || p_prefixes || ').*?(' || p_suffixes || '|$)'; BEGIN lvc_Inmueble := REGEXP_SUBSTR( lvc_direccion, p_regexp ); DBMS_OUTPUT.PUT_LINE( lvc_Inmueble ); END;