2011-06-15 45 views
11

Düzenli ifade kullanarak çift tırnak içine nasıl bir string alabilirim?Normal ifadede çift tırnak

<img src="http://yahoo.com/img1.jpg" alt=""> 

dışarıda dize http://yahoo.com/img1.jpg alt="" almak istiyorum:

aşağıdaki dize var. Normal ifadeyi kullanarak bunu nasıl yapabilirim?

+1

.net? php? rubby? – rerun

+0

java ile regex kullanarak – Ammu

+1

Her zaman alt etiketi de kullanmak ister misiniz? – Kaj

cevap

10

Neden istediğini bilmiyorum alt etiketi de, ancak bu regexp istediğinizi yapar: Grup 1 url ve grup 2 alt etiketidir. Muhtemelen img ve src arasında birçok boşluk olabilir eğer Normal ifade biraz değiştirmek ve olur '=' çevresinde boşluk olabilir eğer

Pattern p = Pattern.compile("<img src=\"([^\"]*)\" (alt=\"[^\"]*\")>"); 
Matcher m = 
    p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\"> " + 
    "<img src=\"http://yahoo.com/img2.jpg\" alt=\"\">"); 

while (m.find()) { 
    System.out.println(m.group(1) + " " + m.group(2)); 
} 

Çıkış:

http://yahoo.com/img1.jpg alt="" 
http://yahoo.com/img2.jpg alt="" 
8

Böyle yapabilirsiniz:

Pattern p = Pattern.compile("<img src=\"(.*?)\".*?>"); 
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">"); 
if (m.find()) 
    System.out.println(m.group(1)); 

Ancak, HTML bazı kütüphane kullanmayı düşünün ayrıştırma eğer: regex HTML ayrıştırmak için iyi bir fikir değildir. Ben jsoup iyi deneyimleri vardı: ayrıştırıcı" öncesrc=" ve sonra"hariç her kömürü alacak

String url = ""; 
Pattern p = Pattern.compile("(?<=src=\")[^\"]*(?=\")"); 
Matcher m = p.matcher("<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">"); 
if (m.find()) 
    url = m.group()); 

: Bu işi yapmak gerekir

String fragment = "<img src=\"http://yahoo.com/img1.jpg\" alt=\"\">"; 
Document doc = Jsoup.parseBodyFragment(fragment); 
Element img = doc.select("img").first(); 
String src = img.attr("src"); 
System.out.println(src); 
+0

Desen,>> – Kaj

+0

@Kaj aradığında çok açgözlüdür: teşekkürler! Regex'i değiştirdim – MarcoS

+0

Cool, sana o zaman oy verebilirim :) – Kaj

2

: işte size bir örnek

+0

Yazının op tarafından nasıl okunacağını bilmiyorum, ancak örneği alt etiketi de istediğini gösteriyor. (Neden olduğunu bilmiyorum ve neden etiket istediğini bilmiyorum, sadece alt etiketin değerini değil) – Kaj

+0

@Kaj - Gördüğüm kadarıyla, ama bu bölümü atladım çünkü bu * link URL'si karışımı * ve "alt" özniteliği (xml notasyonundaki isim ve değer) yazım hatası gibi kokuyordu;) –

İlgili konular