java - How to match a url from a list of patterns in a textfile? -


मेरे पास एक पाठ फ़ाइल है जिसमें मेटा-यूआरएल शामिल हैं:

  http : //www.xyz.com/.*services/ http://www.xyz.com/.*/wireless   

मैं उस फ़ाइल से सभी पैटर्न की तुलना मेरे साथ करना चाहता हूं यूआरएल, और अगर मैं एक मैच मिल एक कार्रवाई निष्पादित यह मिलान प्रक्रिया मेरे लिए समझना कठिन है।

समझाया splitarray [0] में पाठ फ़ाइल की पहली पंक्ति है:

  स्ट्रिंग url = page.getWebURL ()। GetURL (); URL url1 = नया URL (url);   

हम splitterray के साथ यूआरएल 1 की तुलना कैसे कर सकते हैं [0]?

नवीनीकृत

  BufferedReader readbuffer = शून्य; कोशिश करें {readbuffer = नया BufferedReader (नया FileReader ("filters.txt")); } पकड़ (FileNotFoundException e1) {// TODO स्वत: उत्पन्न जनित ब्लॉक e1.printStackTrace (); } स्ट्रिंग स्ट्र्राइड; कोशिश {जबकि ((strRead = readbuffer.readLine ()) = = नल {स्ट्रिंग splitarray [] = strRead.split (","); स्ट्रिंग फर्स्टेंट्री = स्पिटलरा [0]; स्ट्रिंग रेडियंट्री = स्पिटायरेरा [1]; स्ट्रिंग थर्डेंट्री = स्पिटलरा [2]; // स्ट्रिंग चौथेपन = = splitterray [3]; // स्टिंग फिफ्टाइण्ट्री = स्पिटलरेयर [4]; System.out.println (फर्स्टेंट्री + + "+ + +" + + "+ तीसरा मार्ग"); URL url1 = नया URL ("http://www.xyz.com/ship/reach/news-and"); पैटर्न p = Pattern.compile ("http://www.xyz.com/.*/reach"); Matcher m = p.matcher (url1.toString ()); अगर (m.matches ()) {// Do system.out.println ("Yes Done"); }}} पकड़ (IOException ई) {// TODO ऑटो-जेनरेट कैच ब्लॉक e.printStackTrace (); }   

मिलान ठीक काम कर रहा है ... लेकिन अगर मैं चाहता हूं कि किसी भी url को splitterray [0] में दिए पैटर्न के साथ शुरू होता है तो यह करें ... हम इसे कैसे लागू कर सकते हैं .. उपरोक्त मामले में यह मेल नहीं खाता है लेकिन यह यूआरएल http://www.xyz.com/ship/w इस पैटर्न से ही है http://www.xyz Com /.*/ पहुंच तो इस यूआरएल को इस पैटर्न से शुरू होता है .. बस इस बात को अगर लूप में करें ... किसी भी सुझाव की सराहना की जाएगी ... !! < P>

मुझे इस बात के रूप में उलझन में है कि कहां से regexes आ रहे हैं पाठ फ़ाइल? किसी भी स्थिति में, आपके पास url1 की तुलना किसी भी regexes के लिए कठिन समय होगा क्योंकि यह एक URL ऑब्जेक्ट है, और रीजेक्स तारों की तुलना करता है तो आप इसके बजाय अपने स्ट्रिंग यूआरएल के साथ रहना चाहेंगे।

इसे आज़माएं:

  Pattern p = Pattern.compile (splitterray [0 ]); मैटर एम = पी। मेट्चर (यूआरएल); यदि (m.matches ()) {// जो कुछ भी हो}   

m.matches () विधि जांचती है कि क्या आप प्रदान की गई पूरी स्ट्रिंग पैटर्न से मेल खाता है, जो शायद आप यहाँ क्या चाहते हैं यदि आपको यह पता करने की आवश्यकता है कि क्या आपके स्ट्रिंग मिलान का कोई हिस्सा है, तो इसके बजाय m.find () का उपयोग करें।

अपडेट

आप केवल स्ट्रिंग की शुरुआत में पैटर्न का मिलान करने के लिए देख रहे हैं, आप इसके बजाय m.find () का उपयोग करना चाहेंगे। विशेष अक्षर ^ केवल एक स्ट्रिंग की शुरुआत में मेल खाता है, इसलिए अपने regex के सामने जोड़ें, जैसे:

  Pattern p = Pattern.compile (" ^ "स्प्लिटायर [0]);   

आदि।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -