PDA

Visualizza la versione completa : Help per Semplice Regex


_sys/sid
25-11-2006, 16:16
Non ho ancora imparato le Regex... :(
quindi vengo (spero per l'ultima volta) a chiedere una mano su questo argomento...

dovrei estrarre una stringa dalla stringa href="" delle pagine web.
Il problema e' che il codice fatto da skifo potrebbe essere cosi:



href[tab][spazio]"http://"
href[tab][spazio]'http://'


Quindi ho il problema dei tab o spazi a seconda di quello che il tipo ha scritto idem per gli apici... Se Tutti si adeguassero agli standard non ci sarebbero sti problemi!!!

Io dovrei estrarre http:// ma non e' detto che inizino con http quindi dovrei estrarre quello dentro gli apici...



href [tab o spazio (non e' detto che ci siano)] " o ' indirizzo da estrarre " o '


Grazie Mille

albgen
25-11-2006, 17:56
non ho capito bene cosa vuoi fare. se vuoi estrarre un url valido
abbiamo già parlato di questa cosa qui (vedi il terzultimo post)
http://forum.html.it/forum/showthread.php?s=&threadid=1054136

altrimenti prova a spiegarti...non ho capito il discorso degli spazi !

:ciauz:

_sys/sid
25-11-2006, 18:30
non devo estrarre un url valido ma... solo l'url dall'attributo href

il problema e' che non tutti si adeguano agli standard quindi posso avere queste situazioni


href="INDIRIZZO DA ESTRARRE"
href='INDIRIZZO DA ESTRARRE'
href= "INDIRIZZO DA ESTRARRE"
href= 'INDIRIZZO DA ESTRARRE'
href = "INDIRIZZO DA ESTRARRE"
href = 'INDIRIZZO DA ESTRARRE'
href = "INDIRIZZO DA ESTRARRE"
href = 'INDIRIZZO DA ESTRARRE'
href = "INDIRIZZO DA ESTRARRE"
href = 'INDIRIZZO DA ESTRARRE'


spero che cosi si sia capito meglio :)

grazie di nuovo

_sys/sid
25-11-2006, 18:57
una cosa di questo tipo funziona correttamente,

<a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?>
solo che estrae tutto

<a href="...">

Come faccio ad estrarre solo la parte tra " o ' ?

albgen
25-11-2006, 19:04
fai un altro ciclo che ti estrae gli url da quelli estratti con <a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?>

cioè, prima fai <a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?> e quindi avrai tanti <a href....
le salvi in una struttura dati di tipo lista oppure array.
poi usi la regex del url valido sulla lista e avrai tutti gli url :D

_sys/sid
25-11-2006, 19:43
piccolo problema al quale non avevo fatto caso

la regex

<a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?>

prende solo indirizzi formati in questo modo:

<a href="indirizzo">

invece prima e dopo href possono esserci altri attributi, come risolvo il problema?

Grazie

albgen
25-11-2006, 20:00
Originariamente inviato da _sys/sid
piccolo problema al quale non avevo fatto caso

la regex

<a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?>

prende solo indirizzi formati in questo modo:

<a href="indirizzo">

invece prima e dopo href possono esserci altri attributi, come risolvo il problema?

Grazie
non vedo dove stà il problema !:confused:
la regex fa match solo degli <a href="..">.
il resto non lo considera !

_sys/sid
25-11-2006, 20:07
la regex considera solo gli url formati in quel modo

<a href="indirizzo">

se il mio url e' cosi

<a href="indirizzo" title="Mia Pagina">
l'indirizzo non viene preso

albgen
25-11-2006, 20:14
allora usa questa


<a[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""]?.*>

_sys/sid
25-11-2006, 20:18
grazie mille... ultimo problema...
adesso ho un array di indirizzi completi

<a href='mioAddr' title='pio'>

che regex uso per estrarre solo il "mioAddr" ?


Grazie Mille

Loading