2013-03-05 10 views
5

Sto cercando di estrarre i dati tra tag href in una stringa Java. Posso acheive questo con sostituire tutto e sottostringa e con using indexOf ecc.L'espressione regolare di Java estrae i dati tra tag href

Mi piacerebbe sapere come posso ottenere dati usando regex.

Quindi in sostanza sto cercando di estrarre i dati e archiviarli in una stringa o in un elenco.

String data ="12345"; 
     String sampleStr =""; 
     for(int i=0; i<10; i++) { 
     data+=i; 
     sampleStr += "<a href=\"javascript:yyy_getDetail(\'"+data+"\')\">"+data+"</a>"+", "; 
     }   

     System.out.println(sampleStr); 
     String temp = sampleStr.substring(sampleStr.indexOf("\">")+2); 

Qualsiasi suggerimento in merito sarà apprezzato. Cosa dovrebbe essere regex, quindi estraggo solo i dati.

+2

Hai provato l'analisi del codice HTML per un DOM utilizzando un parser HTML? –

+0

Ecco una espressione regolare per iniziare con: '/ ] *> (. *?) <\/a> /' –

risposta

1

Ecco un esempio per le vostre esigenze. Si noti che la corrispondenza completa conterrà la stringa con i tag di ancoraggio e il contenuto cercato è nello group 1.

String data ="12345"; 
String sampleStr =""; 
for(int i=0; i<10; i++) 
{ 
data+=i; 
sampleStr += "<a href=\"javascript:yyy_getDetail(\'"+data+"\')\">"+data+"</a>"+", "; 
} 

Pattern pattern = Pattern.compile("<a[^>]*>(.*?)</a>"); 
Matcher matcher = pattern.matcher(sampleStr); 
while (matcher.find()) 
{ 
     System.out.println("Result "+ matcher.group(1)); 
} 
+0

Grazie per la risposta. L'ho provato, non sembra funzionare. – Nomad

+1

@Nomad scusa, dovresti passare l'intera stringa di ricerca. prova il mio edit – VladL

+0

grazie funziona come un incantesimo. Puoi spiegare la parte del gruppo. Hai detto che ho bisogno solo di un gruppo (1)? – Nomad

1

Si prega di utilizzare un parser HTML/XML. La tua vita sarebbe molto più facile.

L'HTML è in genere molto incoerente e non si può essere sicuri che si svolgerà nel modo desiderato.

In realtà c'è una risposta famosa per quanto riguarda questo, a RegEx match open tags except XHTML self-contained tags

Si dovrebbe dare un'occhiata a Best XML parser for Java per le vostre opzioni se si sceglie di utilizzare un parser HTML/XML :)

+0

Grazie per la risposta. – Nomad

+0

Ti farei invitare, ma non hai un collegamento a un parser java html che potrebbe usare. –

+0

Aggiunto un link per lui per dare un'occhiata lì. Non ho esperienza con i parser Java XML quindi credo che la domanda dovrebbe essere migliore :) – wei2912

Problemi correlati