2011-06-15 16 views
11

मैं नियमित अभिव्यक्ति का उपयोग करके डबल कोट्स के अंदर एक स्ट्रिंग कैसे प्राप्त कर सकता हूं?नियमित अभिव्यक्ति में डबल कोट्स

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

मैं बाहर स्ट्रिंग http://yahoo.com/img1.jpg alt="" प्राप्त करना चाहते हैं:

मैं निम्नलिखित स्ट्रिंग है। मैं नियमित अभिव्यक्ति का उपयोग करके यह कैसे कर सकता हूं? ,

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

लेकिन यदि आप HTML कुछ पुस्तकालय के उपयोग पर विचार कर रहे हैं पार्स करने:

+1

.net? php? Rubby? – rerun

+0

जावा – Ammu

+1

में रेगेक्स का उपयोग कर क्या आप हमेशा alt टैग भी चाहते हैं? – Kaj

उत्तर

10

मुझे नहीं पता कि आप क्यों चाहते हैं alt टैग भी, लेकिन यह regexp जो आप चाहते हैं वह करता है: समूह 1 यूआरएल और समूह 2 alt टैग है। मैं संभवतः regexp थोड़ा संशोधित करेगा अगर वहाँ img src और के बीच कई रिक्त स्थान हो सकता है, और अगर वहाँ रिक्त स्थान के आसपास हो सकता है '='

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

आउटपुट:

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

आप इस तरह यह कर सकते हैं regex एक अच्छा विचार एचटीएमएल पार्स करने के लिए नहीं हैं। मैं jsoup के साथ अच्छा अनुभव था:

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

पार्सर" से पहलेsrc=" और के बाद"को छोड़कर हर चार ले जाएगा:

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

'>' – Kaj

+0

@Kaj की तलाश करते समय पैटर्न बहुत लालची है: धन्यवाद! मैंने regex – MarcoS

+0

कूल संशोधित किया है, तो मैं आप पर वोट कर सकता हूं :) – Kaj

2

यह काम करना चाहिए: यहाँ एक उदाहरण है

+0

मुझे नहीं पता कि ओप द्वारा पोस्ट को कैसे पढ़ा जाए, लेकिन उसका उदाहरण दिखाता है कि वह alt टैग भी चाहता है। (पता नहीं क्यों, और नहीं जानते कि वह टैग क्यों चाहता है, न केवल alt टैग का मूल्य) – Kaj

+0

@Kaj - मुझे लगता है, लेकिन मैंने उस हिस्से को छोड़ दिया क्योंकि एक * लिंक यूआरएल का मिश्रण * और 'alt' विशेषता (xml नोटेशन में नाम और मान) टाइपो की तरह गंध;) –

संबंधित मुद्दे