में यूआरएल से मेल खाने के लिए नियमित अभिव्यक्ति नियमित अभिव्यक्तियों के साथ काम करते समय मैं रेगेक्सबड्डी का उपयोग करता हूं। इसकी लाइब्रेरी से मैंने यूआरएल से मेल खाने के लिए नियमित अभिव्यक्ति की प्रतिलिपि बनाई। मैंने RegexBuddy के भीतर सफलतापूर्वक परीक्षण किया। हालांकि, जब मैंने इसे जावा String
स्वाद के रूप में कॉपी किया और इसे जावा कोड में चिपकाया, तो यह काम नहीं करता है। निम्नलिखित वर्ग प्रिंट false
:जावा
public class RegexFoo {
public static void main(String[] args) {
String regex = "\\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]";
String text = "http://google.com";
System.out.println(IsMatch(text,regex));
}
private static boolean IsMatch(String s, String pattern) {
try {
Pattern patt = Pattern.compile(pattern);
Matcher matcher = patt.matcher(s);
return matcher.matches();
} catch (RuntimeException e) {
return false;
}
}
}
किसी को भी पता है मैं गलत क्या कर रहा हूँ?
सर्जियो, RuntimeException पकड़ने नहीं है। यह सूक्ष्म बग पेश कर सकता है और समग्र रूप से एक खराब अभ्यास है। अगर आप परिदृश्य को अनदेखा करना चाहते हैं तो अभिव्यक्ति अवैध है:} इसके बजाय पकड़ें (PatternSyntaxException pse) {}। आइटम 57 देखें: http://java.sun.com/docs/books/effective/ – OscarRyz
या आप पैटर्न पैट = Pattern.compile (पैटर्न, पैटर्न। CASE_INSENSITIVE) का उपयोग कर सकते हैं; अपरकेस और लोअरकेस दोनों से मेल खाने के लिए रेगेक्स को बदलने से बचने के लिए। – jm4
मुझे पता है कि यह वास्तव में पुराना है ('08), लेकिन किसी भी व्यक्ति के लिए समान समस्याएं हैं, रेगेक्सबड्डी के पास "उपयोग" टैब है। सुनिश्चित करें कि आप पहले जावा 7 स्वाद का चयन करें, और उसके बाद "उपयोग करें" पैनल में आप इसे अपने विशिष्ट मामले के लिए जावा कोड उत्पन्न कर सकते हैं। यह मेरे लिए अच्छी तरह से काम किया। –