2013-09-06 10 views
10

Chcę pobrać znacznik img z tekstu zwróconego z danych JSON w ten sposób. Chcę pobrać to z ciągu znaków:Jak użyć wyrażenia regularnego do pobrania znacznika "img"?

<img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" /> 

Jakie jest wyrażenie regularne, którego muszę użyć, aby je dopasować?

Użyłem następujących, ale to nie działa.

"<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>" 
+4

http : //stackoverflow.com/a/1732454/775544 –

+0

Nie parsuj HTML z regex. HTML nie jest zwykłym językiem. – thegrinner

+0

** Nie używaj wyrażeń regularnych do parsowania HTML. Użyj odpowiedniego modułu analizowania HTML. ** Nie można wiarygodnie parsować HTML za pomocą wyrażeń regularnych, a spotkasz na swojej drodze smutek i frustrację. Gdy tylko HTML zmieni się z twoich oczekiwań, twój kod zostanie zepsuty. Zobacz http://htmlparsing.com/php lub [this SO thread] (http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) dla przykłady prawidłowego analizowania kodu HTML za pomocą modułów PHP, które zostały już napisane, przetestowane i debugowane. –

Odpowiedz

11

mógłby po prostu użyć tego wyrażenia, aby dopasować znacznika img jak w przykładzie:

<img([\w\W]+?)/> 
+0

OP nie powiedział co chciał uchwycić ale ten oddaje klasę, SRC, oraz znaczniki alt. – hwnd

+0

@hwnd tak, wiem. ale jak powiedział, że nie określono, co chce się uchwycić. – aleroot

+0

Html tak naprawdę nie można efektywnie parsować za pomocą wyrażenia regularnego, dodając pewną ziarnistość w wyrażeniu, co jednak zwiększa prawdopodobieństwo: – sln

8

Twój regex nie pasuje ciąg, ponieważ brakuje zamykanie /.

Edit - Nie, / nie jest konieczne, więc regex powinny pracowali. Ale możesz zrelaksować się trochę jak poniżej.

nieco zmodyfikowany:

<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?> 
6

Należy pamiętać, że nie należy używać wyrażeń regularnych do parsowania HTML dla różnych powodów

<img\s+[^>]*src="([^"]*)"[^>]*> 

lub użyj Jsoup ...

String html = "<img class=\"img\" src=\"https://fbcdn-photos-c-a.akamaihd.net/ 
       hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg\" alt=\"\" />"; 

Document doc = Jsoup.parse(html); 
Element img = doc.select("img").first(); 
String src = img.attr("src"); 

System.out.println(src); 
+0

są jsoup lepiej niż to ?? –

+0

Updated przykład – hwnd

+0

mogę dostać cały img tag? –

Powiązane problemy