estrarre il testo da <p> ... </p> tag o direttamente da un file HTML

asp.net c# html html-agility-pack regex

Domanda

Ho una pagina HTML che contiene alcuni nomi di file che voglio scaricare da un server web. Ho bisogno di leggere questi nomi di file per creare un elenco che verrà passato alla mia applicazione web che scarica il file dal server. Questi nomi di file hanno una certa estensione.

Ho scavato su questo argomento ma non ha nulla da dire tranne -

  1. Regex cannt essere utilizzato per analizzare HTML.
  2. Usa HTML Agility Pack

Non c'è altro modo in cui posso cercare il testo che ha pattern come filename.ext da un file HTML?

Esempio di codice HTML che contiene il nome file -

 <p class=3DMsoNormal style=3D'margin-top:0in;margin-right:0in;margin-bottom=:0in; margin-left:1.5in;margin-bottom:.0001pt;text-indent:-.25in;line-height:normal;mso-list:l1 level3 lfo8;tab-stops:list 1.5in'><![if !supportLists]> <span style=3D'font-family:"Times New Roman","serif";mso-fareast-font-family:"Times New Roman"'><span style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span></span></span><![endif]><span style=3D'font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman"'>**13572_PostAccountingReport_2009-06-03.acc**<o:p></o:p></span></p>

Non posso utilizzare HTML Agility Pack perché non mi è consentito scaricare e utilizzare qualsiasi applicazione o strumento.

Non può essere raggiunto da nessuna altra logica?

Questo è quello che ho fatto finora

 <p class=3DMsoNormal style=3D'margin-top:0in;margin-right:0in;margin-bottom=:0in; margin-left:1.5in;margin-bottom:.0001pt;text-indent:-.25in;line-height:normal;mso-list:l1 level3 lfo8;tab-stops:list 1.5in'><![if !supportLists]> <span style=3D'font-family:"Times New Roman","serif";mso-fareast-font-family:"Times New Roman"'><span style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span></span></span><![endif]><span style=3D'font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman"'>**13572_PostAccountingReport_2009-06-03.acc**<o:p></o:p></span></p>

Bcause di alcuni "=" che si verificano in ogni nome di file non sono in grado di ottenere il nome del file. come posso rimuovere l'occorrenza di "=" nella pageSource string

Grazie in anticipo

Akhil

Risposta accettata

Bene, sapendo che le regex non sono l'ideale per trovare valori in HTML:

var files = [];
var p = document.getElementsByTagName('p');

for (var i = 0; i < p.length; i++){
    var match = p[i].innerHTML.match(/\s(\S+\.ext)\s/)

    if (match)
        files.push(match[1]);
}

Dimostrazione dal vivo

Nota: leggere i commenti alla domanda.

Se l'estensione può essere qualsiasi cosa, puoi usare questo:

var files = [];
var p = document.getElementsByTagName('p');

for (var i = 0; i < p.length; i++){
    var match = p[i].innerHTML.match(/\s(\S+\.ext)\s/)

    if (match)
        files.push(match[1]);
}

⠀ <Ma questo davvero non è affidabile.

Dimostrazione dal vivo


Risposta popolare

Potrebbe essere impossibile ottenere nomi di file usando un pattern comune a causa di 1.5in -.25in 7.0pt e di 7.0pt piace, prova ad essere più specifico (se possibile), come
/[a-z0-9_-]+\.[az]+/gi o
/>[a-z0-9_-]+\.[az]+</gi (markup incluso) o pari
/>\d+_PostAccountingReport_\d+-\d+-\d+\.[az]+</gi




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché