Foros del Web » Programando para Internet » PHP »

expresiones regulares, aun no me queda

Estas en el tema de expresiones regulares, aun no me queda en el foro de PHP en Foros del Web. bueno antes q nada WOW! no me habia metido al tema y la verdad es que es muy interesante y practico Estoy haciendo un ejemplo ...
  #1 (permalink)  
Antiguo 14/07/2010, 14:03
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 10 años, 11 meses
Puntos: 5
expresiones regulares, aun no me queda

bueno antes q nada WOW! no me habia metido al tema y la verdad es que es muy interesante y practico

Estoy haciendo un ejemplo que me va a servir pero no logro quitar los corchetes []
Código PHP:
$asunto 'R,i,n,o,c,3,[r,0],n,[7,E]';
$patron '/([A-Za-z0-9-]|\[[^\]]*\])/';
// Tambien asi funciono = '([A-Za-z0-9-]|\[[A-Za-z0-9,]*\])';
preg_match_all($patron$asunto$coincidenciasPREG_PATTERN_ORDER);

echo 
"<pre>";
print_r($coincidencias);
echo 
"</pre>"
y me manda esto :
Código HTML:
Array
(
    [0] => Array
        (
            [0] => R
            [1] => i
            [2] => n
            [3] => o
            [4] => c
            [5] => 3
            [6] => [r,0]
            [7] => n
            [8] => [7,E]
        )

    [1] => Array
        (
            [0] => R
            [1] => i
            [2] => n
            [3] => o
            [4] => c
            [5] => 3
            [6] => [r,0]
            [7] => n
            [8] => [7,E]
        )

)
en realidad lo que necesito es
Código HTML:
Array
(
    [0] => Array
        (
            [0] => R
            [1] => i
            [2] => n
            [3] => o
            [4] => c
            [5] => 3
            [6] => Array => r,0
            [7] => n
            [8] => Array => 7,E
        )

)
por cierto este link esta muy bueno!:
http://www.bdat.net/documentos/expre...res/book1.html
y si me recomiendan otro asi...
  #2 (permalink)  
Antiguo 14/07/2010, 14:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 9 años, 10 meses
Puntos: 2527
Respuesta: expresiones regulares, aun no me queda

Cita:
[6] => Array => r,0
no puedes esperar un sub-Array en el arreglo de coincidencias, eso está mal desde el punto de vista conceptual... no es posible, olvida ese asunto...

con respecto a evitar los corchetes, es mas posible... sin embargo, debes entender que al usar paréntesis de captura: se captura -valga la redundancia- todo lo que este dentro de dichos paréntesis, y pues... tu expresión tiene los corchetes, si los quieres evitar simplemente usa otra técnica... ;)

por ejemplo, para usar un grupo que no se capture usa (?:), y ya dentro colocas tus sub-expresiones....

así mismo, ya dentro puedes usar los paréntesis para seleccionar solo algunos fragmentos y no todo:
Cita:
(?:(foo)|\[(.*?)\])
esto es lo que mas se le acerca a omitir caracteres dentro de capturas, sin embargo puedes usar trim, substr, str_replace, etc... para quitar dichos caracteres en tus demás ejecuciones... osea, primero obtienes el texto, luego lo normalizas... no esperes hacer todo-en-uno con regex!!

sería bueno que sepas desde ahora que regex sirve pasos regulares, específicos... no vas a conseguir hacer todo con una sola expresión...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/07/2010, 15:51
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: expresiones regulares, aun no me queda

Ok Gracias por tu consejo, ahora mismo lo tomo en cuenta, por lo pronto ya le agregue lo que me sugieres:
Código PHP:
$asunto 'R,i,N,o,c,3,[r,0],n,[7,E]';
$patron '([A-Za-z0-9-]+|\[[^\]]*\])';

preg_match_all($patron$asunto$coincidenciasPREG_PATTERN_ORDER);

$newArr = array();
$index 0;
foreach(
$coincidencias[0] as $s)
{
    if(
substr($s01) == "[") {
    
$newArr[$index] = split(',',substr($s1, -1));
    } else { 
    
$newArr[$index] = $s;
    }
$index++;
}

echo 
"<pre>";
print_r($newArr);
echo 
"</pre>"
Código HTML:
Array
(
    [0] => R
    [1] => i
    [2] => N
    [3] => o
    [4] => c
    [5] => 3
    [6] => Array
        (
            [0] => r
            [1] => 0
        )

    [7] => n
    [8] => Array
        (
            [0] => 7
            [1] => E
        )

)
  #4 (permalink)  
Antiguo 14/07/2010, 17:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 9 años, 10 meses
Puntos: 2527
Respuesta: expresiones regulares, aun no me queda

ves, si no era tan difícil obtener el arreglo como querías!! ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: expresiones, queda, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:33.