मेरे पास इस स्ट्रिंग में HTML का एक बड़ा हिस्सा है और मैं href = "..." से लिंक निकालने का प्रयास कर रहा हूं स्ट्रिंग का हिस्सा।जावा: मेरे पास HTML की एक बड़ी स्ट्रिंग है और href = "..." टेक्स्ट निकालने की आवश्यकता है
String innerHTML = getHTML();
Pattern p = Pattern.compile("href=\"(.*)\"", Pattern.DOTALL);
Matcher m = p.matcher(innerHTML);
if (m.find()) {
// Get all groups for this match
for (int i=0; i<=m.groupCount(); i++) {
String groupStr = m.group(i);
System.out.println(groupStr);
}
}
कोई मुझे बता सकते हैं:
<a href="..." />
<a class="..." href="..." />
मैं वास्तव में regex के साथ लेकिन जब मैं निम्नलिखित कोड का उपयोग किसी कारण के लिए एक समस्या नहीं है: href निम्नलिखित रूपों में से एक में हो सकता है मेरे कोड में क्या गलत है? मैंने यह सामान php में किया था लेकिन जावा में मैं कुछ गलत कर रहा हूं ... क्या हो रहा है कि जब भी मैं इसे प्रिंट करने का प्रयास करता हूं तो यह पूरे HTML स्ट्रिंग को प्रिंट करता है ...
संपादित करें: बस इतना है कि हर कोई जानता है कि एक स्ट्रिंग मैं के साथ काम कर रहा हूँ की तरह:
<a class="Wrap" href="item.php?id=43241"><input type="button">
<span class="chevron"></span>
</a>
<div class="menu"></div>
हर मैं कोड चलाने के लिए, यह पूरी स्ट्रिंग प्रिंट ... यही समस्या है ...
और के बारे में jTidy का उपयोग कर ... मैं कर रहा हूँ इस पर यह जानना दिलचस्प होगा कि इस मामले में क्या गलत हुआ ...
का उपयोग कर वास्तव में समस्या यह है क्या द्वारा यह है करना है? क्या आपको एक त्रुटि संदेश, या गलत परिणाम मिलता है? –
ओह ... क्षमा करें ... पोस्ट अपडेट किया गया। लेकिन समस्या यह थी कि यह मुझे लिंक नहीं दे रहा था बल्कि फिर पूरी स्ट्रिंग को प्रिंट कर रहा था ... – Legend
* "क्या कोई मुझे बता सकता है कि मेरे कोड में क्या गलत है?" * - हाँ; आप RegEx का उपयोग किसी ऐसे चीज़ के लिए करने का प्रयास कर रहे हैं जिसका उपयोग नहीं किया जाना चाहिए। एक HTML डोम पार्सर का उपयोग करें, जैसे कि जेटीडी (नीचे बलुस के उत्तर में लिंक)। –