/ / Come eseguire il regex di più URL dalla stessa variabile In Perl - regex, perl, url

Come eseguire il regex di più URL dalla stessa variabile In Perl - regex, perl, url

Sto cercando di cercare un campo in un database per estrarre URL, a volte ci saranno più di 1 URL in un campo e vorrei estrarli in variabili separate (o in un array).

So che il mio regex non coprirà tutte le possibilità, purché io marchi tutto ciò che inizia con http e finisca con uno spazio, sto bene.

Il problema che sto avendo è che anche i miei sforzisembra ottenere solo 1 URL per record o ottengono solo 1 l'ultima lettera da ciascun URL. Ho provato un paio di tecniche diverse basate su soluzioni che altri hanno pubblicato ma non ho trovato una soluzione che funzioni per me.

Esempio di linea di input: analisi http://marko.co http://tester.net Quasi tutto ciò che ti piacerebbe.

Obiettivo di output $ var [0] = http://marko.co $ var [1] = http://tester.net

Primo tentativo: if ($ status = ~ m / http: (S) + / g) { stampa "$ & n"; }

Produzione: http://marko.co

Secondo tentativo: @statusurls = ($ stato = ~ m / http: (S) + / g); stampa "@statusurlsn";

Produzione: o t

Sono nuovo di regex, ma dal momento che sto usando la stessa espressione regolare per ogni tentativo, non capisco perché sta restituendo risultati così diversi.

Grazie per l'aiuto che puoi offrire.

Ho guardato questi post e non ho trovato quello che stavo cercando o non ho capito come implementarlo:

Questo mi è sembrato il più promettente (ed è qui che ho ottenuto il secondo tentativo, ma non ha restituito l'intero URL, solo la lettera: Come posso memorizzare le catture di espressioni regolari in un array in Perl?

Questo ha delle cose fantastiche. Sono curioso di sapere se ho bisogno di guardare l'URL come una parola dato che è stato chiuso da spazi: Gruppo Regex in Perl: come catturare gli elementi nell'array dal gruppo di espressioni regolari che corrisponde a un numero sconosciuto di occorrenze / multiple / variabili da una stringa?

Questo offre suggerimenti simili come i primi due. Come posso archiviare le catture da un'espressione regolare Perl in variabili separate?

Soluzione: @statusurls = ($ stato = ~ m / (http: S +) / g); stampa "@statusurlsn";

Grazie!

risposte:

3 per risposta № 1

Penso che sia necessario catturare più di un solo personaggio. Prova invece questa espressione regolare:

m/http:(S+)/g