मेरे पास एक बहुत ही सरल रेगेक्स प्रश्न है। मान लीजिए मैं 2 शर्तें हैं:बहुत सरल रेगेक्स प्रश्न
मैं regex का उपयोग कर baseurl कैसे निकाल सकते हैं?
नमूना उत्पादन:
मेरे पास एक बहुत ही सरल रेगेक्स प्रश्न है। मान लीजिए मैं 2 शर्तें हैं:बहुत सरल रेगेक्स प्रश्न
मैं regex का उपयोग कर baseurl कैसे निकाल सकते हैं?
नमूना उत्पादन:
इस तरह:
String baseUrl;
Pattern p = Pattern.compile("^(([a-zA-Z]+://)?[a-zA-Z0-9.-]+\\.[a-zA-Z]+(:\d+)?/");
Matcher m = p.matcher(str);
if (m.matches())
baseUrl = m.group(1);
हालांकि, अगर आप इस तरह के बजाय URI
class का उपयोग करना चाहिए,:
URI uri = new URI(str);
/^(https?\:\/\/[^\/]+).*/$1/
यह कुछ भी है जो http के साथ शुरू होता कब्जा और $ 1 के लिए सबसे पहले/के बाद शुरू से ही सब कुछ शामिल होंगे //
अपने त्वरित प्रतिक्रिया के लिए धन्यवाद – Sunil
लिखने और फेंक दूर स्क्रिप्ट के अलावा, आप चाहिए हमेशा पार्स करने से बचना चाहिए रेगेक्स का उपयोग कर जटिल वाक्यविन्यास (ई-मेल पते, यूआरएल, एचटीएमएल पेज, इत्यादि)।
मेरा मानना है कि, आप अंततः काट लेंगे।
टिप्पणी के लिए धन्यवाद – Sunil
मैं बहुत यकीन है कि वहाँ एक जावा वर्ग उस पथ जोड़तोड़ की अनुमति देगा कि हूँ, लेकिन
https?://[^/]+
काम करेगा अगर यह, एक regex हो गया है।
[^/]_//[^/]+
यानी: गैर स्लैश (0 या अधिक बार), दो स्लैश, गैर
आपकी प्रतिक्रिया के लिए धन्यवाद सर – Sunil
अपने दो विशिष्ट उदाहरण के लिए सरल समाधान की तरह लग रहा पैटर्न होगा (s?
भी https:
को संभालने के लिए शामिल है) -स्लैश (0 या अधिक बार)। यदि आप चाहें तो आप उससे कठोर हो सकते हैं, क्योंकि दो मौजूदा उत्तर अलग-अलग तरीकों से कर रहे हैं - एक अस्वीकार कर देगा। यूआरएल ftp:
से शुरू हो रहा है, दूसरा अंडरस्कोर के साथ डोमेन को अस्वीकार कर देगा (लेकिन बिना किसी अग्रणी protocol://
के यूआरएल स्वीकार करेगा, जिससे उस सम्मान में मेरा भी व्यापक होगा)। इस प्रकार के उत्तरों (सभी सही wrt आपके scant specs ;-) आपको यह सुझाव देना चाहिए कि आपकी चश्मा बहुत अस्पष्ट हैं और उन्हें कड़ा होना चाहिए।
आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद सर – Sunil
यहां एक रेगेक्स है जो दी गई समस्या को पूरा करना चाहिए।
https?://[^/]*
मुझे लगता है कि आप इसे आंशिक रूप से रेगेक्स के अधिक ज्ञान प्राप्त करने के लिए कह रहे हैं।
String urlStr = "https://www.abc.com/stuff";
URL url = new URL(urlStr);
String host = url.getHost();
String protocol = url.getProtocol();
URL baseUrl = new URL (protocol, host);
यह बेहतर है के रूप में यह है, तो अपने इनपुट यूआरएल अधिक मामलों को पकड़ने चाहिए: अगर, हालांकि, आप एक URL से होस्ट खींचने की कोशिश कर रहे हैं, यह यकीनन अधिक सही जावा के और अधिक मजबूत पार्स तरीकों का उपयोग करने के लिए है ऊपर वर्णित के रूप में सख्त नहीं है।
आपके त्वरित उत्तर सर – Sunil
regexp के बिना एक एक लाइनर:
String baseUrl = url.substring(0, url.indexOf('/', url.indexOf("//")+2));
:) आपके उत्तर के लिए धन्यवाद लेकिन मैं regex का उपयोग करना चाहता हूं – Sunil
यह सिर्फ होमवर्क – Gyom
@Gyom तरह लग रहा है इस होमवर्क की तरह कुछ भी लग रहा है –