Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2010, 19:27
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
buscar links sin http ni www ni # al principio

Estoy queriendo escribir una expresion regular para filtrar links a paginas exteriores. Los resultados deberían ser todos los links internos, que no empiezen con #, ni contengan http, www o .com

La primera dificultad es negar el primer caracter. Si pongo esto, me elije un caracter que no sea >, pero que puede ser por ejemplo "h".

[^#]

Tengo escrito un look forward para evitar links que contengan http:

href="((?:(?!http).)*)"

Pero no encuentro manera de negar dos posibilidades a la vez. Hay algo escrito en estas paginas, pero no pude aplicarlo:
http://www.ibm.com/developerworks/op...os-php-regex2/ (Listing 4. Look-ahead example)
http://www.perlmonks.org/?node_id=518444 (Nesting)

Tendría que ser esto:

/<a href="((?: (?!http) | (?!www) .)*)">(.*)<\/a>/is

o esto:

/<a href="(?= (?: (?!http)) | (?:(?!www) .)*)">(.*)<\/a>/is

Probe a mi manera, así, pero tampoco va: ((?:(?![http|www]).)*)

Alguna ayuda please?