Article View: chile.comp.programacion
Article #1357Re: Extracción de substring
From: cbd
Date: Thu, 19 Oct 2006 00:44
Date: Thu, 19 Oct 2006 00:44
73 lines
3701 bytes
3701 bytes
La verdad es que apuntaba a un string que se ingresa en un formulario para realizar una búsqueda en una BD en la que el usuario ingresa unas palabras en las que puede haber dos posibilidades: Opción. 1: dato1 dato2 dato3 ---> Significa que va a buscar la cadena literalmente, para usar "campo_tabla LIKE '%dato1 dato2 dato3%'. Opción 2: dato1 OR dato2 OR dato3 AND dato4 ---> Significa que cualquiera de estos datos (dato1, dato2 y dato3) puede existir en la BD y dato4 debe existir en la BD. En todo caso ya lo tengo funcionando y no ocupé regex al final sino que me hice una función que al comienzo utiliza split(...) y de ahí el resto. Salu2 Cristian Gutierrez escribió: > Hoy en la ma~nana, cbazan__no_spa_m@vtr.net dijo: >> Estimados, hace un buen rato que me estoy cabeceando con el siguiente >> tema (en php) al cuál no le pego mucho: >> Tengo un string en el que puede venir la siguiente cadena: "palabra1 >> OR palabra2 OR palabra3 AND palabra4". >> Tengo que recuperar a u array las palabras que estén relacionadas por >> los operadores OR y AND, o sea en este caso en el arreglo1 las >> palabras: palabra1,palabra2 y palabra3; y en el arreglo2 las palabras: >> palabra3 y palabra4. >> He tratado de hacerlo con expresiones regulares pero sin resultado. >> Alguien me podría iluminar por favor? > > Huele a parser de SQL a medio cocinar. Pueden venir estos strings > también? > > palabra OR palabra AND palabra OR palabra > > palabra AND palabra OR palabra AND palabra > > palabra AND palabra OR palabra OR palabra AND palabra > > palabra AND ( palabra OR palabra OR palabra ) AND palabra > > palabra OR ( palabra AND ( palabra OR palabra ) ) > > ( palabra AND ( palabra OR palabra ) ) OR ( palabra AND palabra ) > > Si es así de arbitrario, te aviso que te vas a quedar corto con > expresiones regulares sí o sí (debe haber un teorema con nombre pomposo > que lo prueba). En ese caso tendrías que implementar un pequeño parser > usando una "gramática", como se puede hacer por ejemplo con el módulo > Parse::RecDescent de Perl (o yacc, o algún equivalente para PHP). > > Por otro lado, si siempre van a ser una serie ORs y ANDs y sin > paréntesis, entonces lo que quieres hacer es factible, pero no es de > mucha utilidad para evaluar el resultado pues se pierde la asociatividad > (necesitas un árbol para poder representar la expresión, y no dos > arreglos). > > Por qué no nos cuentas mejor qué necesitas hacer, a ver si a alguien se > le ocurre una solución más adecuada? > > Salu2, >
Technical Details
Message-ID:
<eh6ea2$rc9$1@news.nivel5.cl>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!not-for-mailReferences:
<eh5bnq$g1i$1@news.nivel5.cl> <87vemhqkxz.fsf@guti.cl>Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,cb64eda49261e625 X-Google-Attributes: gid1593cb,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!not-for-mail From: cbd <cbazan__no_spa_m@vtr.net> Newsgroups: chile.comp.programacion Subject: Re: Extracción de substring Date: Wed, 18 Oct 2006 21:44:25 -0300 Organization: Varios Lines: 74 Message-ID: <eh6ea2$rc9$1@news.nivel5.cl> References: <eh5bnq$g1i$1@news.nivel5.cl> <87vemhqkxz.fsf@guti.cl> NNTP-Posting-Host: pc-14-228-45-190.cm.vtr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable X-Trace: news.nivel5.cl 1161215106 28041 190.45.228.14 (18 Oct 2006 23:45:06 GMT) X-Complaints-To: news@news.nivel5.cl NNTP-Posting-Date: Wed, 18 Oct 2006 23:45:06 +0000 (UTC) User-Agent: Thunderbird 1.5.0.7 (X11/20060921) In-Reply-To: <87vemhqkxz.fsf@guti.cl>