2013-03-05 13 views
5

Próbuję wyodrębnić dane między znacznikami href w ciągu znaków Java. Mogę osiągnąć to przez zastąpienie wszystkich i podłańcuchami oraz za pomocą indexOf itp.Wyodrębnianie danych Java za pomocą wyrażeń regularnych między znacznikami href

Chciałbym wiedzieć, w jaki sposób mogę uzyskać dane za pomocą wyrażeń regularnych.

Więc zasadniczo próbuję wyodrębnić dane i przechowywać w ciągu lub na liście.

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); 

Wszelkie sugestie w zakresie będą mile widziane. Co powinno być regex, więc wyodrębniam tylko dane.

+2

próbowałeś parsowania HTML DOM korzystający z parsera HTML? –

+0

Oto wyrażeń regularnych na początek: '/ ] *> (. *?) <\/a> /' –

Odpowiedz

1

Oto przykład dla Twoich potrzeb. Pamiętaj, że pełne dopasowanie będzie zawierało ciąg znaków z tagami kotwicy, a Twoja wyszukiwana treść znajduje się w 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

Dzięki za odpowiedź. Próbowałem to nie działa. – Nomad

+1

@Nomad przepraszam, powinieneś przekazać cały ciąg wyszukiwania. spróbuj moje edytowanie – VladL

+0

dzięki działa jak urok. Czy możesz wyjaśnić część grupy. Wspomniałeś, że potrzebuję tylko grupy (1)? – Nomad

1

Zamiast tego użyj parsera HTML/XML. Twoje życie byłoby znacznie łatwiejsze.

HTML jest zwykle bardzo niespójny i nie można mieć pewności, że będzie on wyglądał tak, jak tego chcesz.

Jest rzeczywiście słynny odpowiedź w odniesieniu do tego, co RegEx match open tags except XHTML self-contained tags

Należy przyjrzeć Best XML parser for Java dla opcji, jeśli zdecydujesz się użyć parser HTML/XML :)

+0

Dzięki za odpowiedź. – Nomad

+0

Pozwoliłbym ci awansować, ale nie masz linku do parsera java html, którego mógłby użyć. –

+0

Dodano link do niego, żeby się tam przyjrzeć. Nie mam doświadczenia z programami Java XML, więc uważam, że pytanie powinno być lepsze :) – wei2912

Powiązane problemy