मैं HTML टैग्स को हटाने के लिए रेगेक्स का उपयोग कर रहा हूं। मैं कुछ ऐसा करता हूं - result.replaceAll("\<.*?\>", "");

हालांकि, यह मुझे एचटीएमएल में आईएमजी टैग से छुटकारा पाने में मदद नहीं करता है। कोई विचार ऐसा करने का एक अच्छा तरीका क्या है?

0
Suchi 14 जून 2011, 22:11

7 जवाब

सबसे बढ़िया उत्तर

अधिक ठोस अनुशंसा देने के लिए, JSoup (या NekoHTML) HTML को जावा ऑब्जेक्ट में पार्स करने के लिए।

एक बार आपके पास एक Document ऑब्जेक्ट हो जाने के बाद, टैग को हटाने के लिए इसे आसानी से ट्रेस किया जा सकता है। यह कुकबुक रेसिपी दिखाता है कि DOM से एट्रिब्यूट और टेक्स्ट कैसे प्राप्त करें।

1
Jeff Foster 14 जून 2011, 22:20

यदि आप HTML पार्सर्स/क्लीनर का उपयोग नहीं कर सकते हैं तो मैं आपको कम से कम Pattern.DOTALL ध्वज का उपयोग करने का सुझाव दूंगा ताकि बहु-पंक्ति HTML ब्लॉकों की देखभाल की जा सके। इस तरह कोड पर विचार करें:

String str = "123 <img \nsrc='ping.png'>abd foo";
Pattern pt = Pattern.compile("<.*?>", Pattern.DOTALL);
Matcher matcher = pt.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(sb, "");
}
matcher.appendTail(sb);
System.out.println("Output: " + sb);

आउटपुट

Output: 123 abd foo
2
anubhava 14 जून 2011, 22:30

एक अन्य सुझाव है HtmlCleaner

1
Thor 14 जून 2011, 22:24

मैं केवल वही दोहरा रहा हूं जो दूसरों ने पहले ही कहा है, लेकिन इस बिंदु को अधिक नहीं बताया जा सकता है: HTML को पार्स करने के लिए REGEXES का उपयोग न करें। SO पर इस पर 1,000 समान प्रश्न हैं। एक उचित HTML पार्सर का उपयोग करें, यह आपके जीवन को इतना आसान बना देगा, और कहीं अधिक मजबूत और विश्वसनीय है। Dom4j, जेरिको, JSoup पर एक नज़र डालें। कृपया।

0
Richard H 14 जून 2011, 23:17

तो, आपके लिए कोड का एक टुकड़ा। मैं HTML को पार्स करने के लिए http://htmlparser.sourceforge.net/ का उपयोग करता हूं। यह अधिक जटिल नहीं है और उपयोग करने के लिए काफी सरल है।

मूल रूप से यह इस तरह दिखता है:

import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

    ...

    String html; /* read your HTML into variable 'html' */
    String result=null;
    ....
    try {
        Parser p = new Parser(html);
        NodeList nodes = p.parse(null);
        result = nodes.asString();
    } catch (ParserException e) {
        e.printStackTrace();
    }

यह आपको टैग से मुक्त सादा पाठ देगा (लेकिन & जैसा कोई विकल्प तय नहीं किया जाएगा)। और निश्चित रूप से आप इस पुस्तकालय के साथ और भी बहुत कुछ कर सकते हैं, जैसे फ़िल्टर लागू करना, विज़िटर, पुनरावृति और सभी चीज़ें।

0
Gleb Varenov 14 जून 2011, 23:24

इसके बजाय एचटीएमएल पार्सर का प्रयोग करें। ऑब्जेक्ट पर पुनरावृति करें, अपनी पसंद के अनुसार प्रिंट करें और सर्वोत्तम परिणाम प्राप्त करें।

0
Hayati Guvence 2 अक्टूबर 2012, 04:52

मैं नीचे दिए गए कोड स्निपेट के साथ ऐसा करने में सक्षम हूं।

String htmlContent = values.get(position).getContentSnippet();
String plainTextContent = htmlContent.replaceAll("<img .*?/>", "");

मैंने अपनी आरएसएस सामग्री में आईएमजी टैग को साफ करने के लिए उपरोक्त रेगेक्स का उपयोग किया।

0
Ajith Memana 24 अप्रैल 2017, 08:18