expresion regular selección entre varias palabras

Iniciado por kinos, 20 Septiembre 2010, 23:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Nakp

pues con esto:

Código (pcre) [Seleccionar]
[^\.\w](com|org|net)[^\.\w]

obtuve:

"com" google.com  com comasagua organizacion org netcat net enet .net
Ojo por ojo, y el mundo acabará ciego.

kinos

Hay dos cosas que no entiendo:

- qué significa esta expresión $/i
- por qué hay que poner la barra delante /^

Shell Root

#12
Código (SQL) [Seleccionar]
/ /*Aquí ExpReg */ $/i
^ /* Inicio de palabra */
$ /* Final de palabra */
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

Código (perl) [Seleccionar]
[^\.\w](com|org|net)[^\.\w]

Umm, recordando que con las expresiones regulares se debe tener muchos cuidado, esa expresion no filtra bien y no funcionaria correctamente, seguro porque no la haz probado y la pusiste de rápido xD. Me acordó a algunos vectores XSS xDDD.

Código (php) [Seleccionar]
[^\.\w](com|org|net)[^\.\w]
[^\.\w](com|org|net)[^\.\w]

Hay esta el problema, primero estas indicando que algo debe existir delante y de tras de (com|org|net) para poder cumplirse la expresión, osea si ingreso com, org,  net me la rechazara ya que para poder coincidir debe existir aunque sea una palabra delante y detrás, antes de entrar al paréntesis de captura...

Tambien no filtra bien las palabras debido a esto:
Código (php) [Seleccionar]
[^\.\w]
Estas indicando que al principio y al final debe existir una palabra que no contenga caracteres alfanuméricos o puntos...

Ejemplo:
<?php

$host 
= array('"ê&#315;&#293;á&#310;é&#341;•com"''com''"com"','==org==');


foreach(
$host as $result)
{
   if(
preg_match('/[^\.\w](com|org|net)[^\.\w]/',$result$captura))
   {
      echo 
"Valida-> $result<br />";
   }else{
      echo 
"No valida-> $result<br />";
         }       
}

?>


Salida:
Valida-> "êĻĥáĶéŕ•com"
No valida-> com
Valida-> "com"
Valida-> ==org==





i es para que no distinga entre mayúscula y minúscula(Case sensitive)
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.