Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/01/2013, 02:50
Avatar de dontexplain
dontexplain
 
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 11 meses
Puntos: 127
Respuesta: Expresion regular

Para tu caso te hace falta algo similar

href="http:\/\/(((?!algo).)*)"

donde algo será la cadena que quieres excluir.

La explicación es sencilla, igual que . corresponde a cualquier carácter excepto salto de línea, si se hiciera

(?!algo).*

significa que no puede empezar por algo pero que tras algo cualquier cosa inclusive algo puede darse, entonces fallaría siempre que no comenzara con eso. ((excepcion).)* implica que cualquier cosa a cada carácter examinado puede corresponder excepto si es (?!excepcion), y que excepcion va antes para que deseche esa iteración y continúe con el siguiente carácter. * implica que esa comprobación será efectiva 0 o más veces, tantas como sea larga la cadena a comprobar.

O sea, para <a href="http://www.algo.com">enlace</a> valdría

Cita:
href="http:\/\/(((?!www\.algo\.com).)*)"
que es finalmente

'href="http:\/\/(((?!' + variable +').)*)"'

y para capturar el grupo resultante (la url) si hubiera captura y haciendo un ajuste para admitir comilla simple y doble

Código Javascript:
Ver original
  1. expr = /href=["'](http:\/\/(((?!www\.algo\.com).)*))["']/
  2. texto = 'href="http://asd.com"';
  3. r = expr.exec(texto);
  4. return r[1];

que devolvería

http://asd.com


Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 28/01/2013 a las 02:58