È necessario utilizzare le parentesi cattura per sub-espressione corrisponde:
match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1];
match restituisce un array con l'intera partita in corrispondenza dell'indice 0, tutte le catture di espressione sub saranno aggiunti alla matrice nell'ordine in cui abbinato. In questo caso, l'indice 1
contiene la sezione corrispondente allo \/pdf\/.*?\.pdf
.
Prova e rendi il tuo regex più specifico di solo
.*?
se corrisponde troppo ampiamente. Per esempio:
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1];
[^"]+?
sarà pigramente abbinare una stringa di caratteri che non contiene il carattere di virgolette. Ciò limita la partita per rimanere all'interno le virgolette, in modo che il match non sarà troppo ampia nel seguente stringa, per esempio:
<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a>
fonte
2010-03-11 12:59:57
Questo mi dà /pdf/filename.pdf, ma ho bisogno di ottenere < a href = "somedirecrories/pdf/nomefile.pdf" ma sto rimuovendo il link dal codice html e ci sono riferimenti ad altri href più in alto nel documento - Quindi immagino di aver bisogno di una sorta di pattern match –
@Gerald: Sorry, Sorry Non avevo capito che è quello che intendevi. Ho aggiornato la mia risposta. –
Perfetto esattamente quello che stavo cercando - grazie Andy –