2011-05-03 2 views
7

Sto cercando un modo per utilizzare regexp per rimuovere tutti i tag html da una stringa.
Quindi se ho <HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML> mi piacerebbe ottenere il hello da esso.regexp per i tag html con Matlab

So che probabilmente assomiglierà ai tag nidificati, ma non lo è, perché tutto ciò che voglio fare qui è rimuovere qualcosa tra due <>.

Sto usando Matlab per farlo, ma la regexp è la stessa identica, quindi sentiti libero di contribuire con qualsiasi aiuto.
Grazie.

risposta

10

La mia soluzione è:

>> str='<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
>> regexprep(str, '<.*?>','') 

ans = 

Hello 
+0

fantastico, grazie! –

3

E 'ampiamente accettato che l'uso di espressioni regolari per analizzare HTML generale è di cattivo gusto. Se il tuo html è molto più complicato rispetto all'esempio fornito, dovresti invece utilizzare un parser XML.

Ulteriori discussioni in questa famosa domanda SO. RegEx match open tags except XHTML self-contained tags.

Se si vuole analizzare il contenuto correttamente, quindi scaricare xml_io_tools e utilizzare

doc = xml_read('test.html') 
doc.b.FONT.CONTENT 

Se si vuole attaccare con regex, quindi utilizzare la risposta di Ilya, ma con una delle regex dalla risposta legati, ad esempio, ,

str = '<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
rx = '<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>'; 
regexprep(str, rx, '') 
1

dal momento che lei ha detto che si desidera estrarre "ciao" da quanto sopra html file (ad esempio filename.html), è possibile utilizzare il seguente in MATLAB:

doc = xmlread ('filename.html'); content = doc.item (0) .getTextContent

Spero che questo aiuti!