2010-03-25 11 views
13

गिट भंडारों के लिए उचित नियमित अभिव्यक्ति क्या होगी?गिट भंडार के लिए नियमित अभिव्यक्ति

उदाहरण लिंक: [email protected]: किसी/someproject.git

तो

यह [उपयोगकर्ता] तरह होगा @ [सर्वर]: [परियोजना] .git यूआरएल

सर्वर हो सकता है या आईपी प्रोजेक्ट में '0' जैसे अल्फान्यूमेरिक की तुलना में कुछ अन्य वर्ण हो सकते हैं। मुझे यकीन नहीं है कि '/'

कोई सुझाव क्या है?

+0

मैं रेगुलर एक्सप्रेशन आश्वस्त नहीं कर रहा हूँ, इस वाक्य रचना पार्स करने के लिए सबसे अच्छा समाधान है। Https: //blog.codinghorror देखें।कॉम/नियमित-अभिव्यक्ति-अब-आप-दो-समस्याएं हैं/ –

उत्तर

11

Git भंडार URL एक्सप्रेशन की एक बड़ी श्रृंखला स्वीकार करता है:

* ssh://[email protected]:port/path/to/repo.git/ 
* ssh://[email protected]/path/to/repo.git/ 
* ssh://host.xz:port/path/to/repo.git/ 
* ssh://host.xz/path/to/repo.git/ 
* ssh://[email protected]/path/to/repo.git/ 
* ssh://host.xz/path/to/repo.git/ 
* ssh://[email protected]/~user/path/to/repo.git/ 
* ssh://host.xz/~user/path/to/repo.git/ 
* ssh://[email protected]/~/path/to/repo.git 
* ssh://host.xz/~/path/to/repo.git 
* [email protected]:/path/to/repo.git/ 
* host.xz:/path/to/repo.git/ 
* [email protected]:~user/path/to/repo.git/ 
* host.xz:~user/path/to/repo.git/ 
* [email protected]:path/to/repo.git 
* host.xz:path/to/repo.git 
* rsync://host.xz/path/to/repo.git/ 
* git://host.xz/path/to/repo.git/ 
* git://host.xz/~user/path/to/repo.git/ 
* http://host.xz/path/to/repo.git/ 
* https://host.xz/path/to/repo.git/ 
* /path/to/repo.git/ 
* path/to/repo.git/ 
* ~/path/to/repo.git 
* file:///path/to/repo.git/ 
* file://~/path/to/repo.git/ 

एक आवेदन है कि मैं ने लिखा है कि इन भाव (YonderGit) की पार्स की आवश्यकता है के लिए, मैं के साथ आया था निम्नलिखित (पायथन) नियमित अभिव्यक्ति:

(1) '(\w+://)([email protected])*([\w\d\.]+)(:[\d]+){0,1}/*(.*)' 
    (2) 'file://(.*)'  
    (3) '([email protected])*([\w\d\.]+):(.*)' 

अधिकांश के लिए सकारात्मक जंगली "जंगली में" सामना करना पड़ा, मुझे संदेह है (1) पर्याप्त है।

+1

यह [email protected] जैसे यूआरएल के साथ काम नहीं करता है: समूह/project.git – Anonymous

2

मोटे तौर पर

^[^@][email protected][^:]+:[^/]+/[^.]+\.git$ 
+0

यह गेरिट की गिट यूरी को संभाल नहीं पाती है। –

0

गिट भंडार कई आकारों और आकारों में आ सकते हैं जो उस उदाहरण की तरह कुछ नहीं दिखते हैं। पूरी सूची के लिए git-clone मैन पेज देखें।

अधिक आम लोगों में से कुछ के बजाय http या git प्रोटोकॉल का उपयोग SSH के (या, वास्तव में, मैन्युअल ssh:// प्रोटोकॉल को निर्दिष्ट) शामिल हैं। उपयोगकर्ता नाम वैकल्पिक हैं, वहाँ एक / या एक .git होने के लिए नहीं है, बंदरगाहों निर्दिष्ट किया जा सकता है, आदि आदि

फिलहाल आप मूल रूप से केवल निजी Github रेपोस, या लोगों को जो उन्हें तरह देखने के लिए होने की अनुमति दे रहे । क्या तुम यही चाहते हो? यदि हां, तो एस मार्क का जवाब अच्छा दिखता है!

यदि आप किसी भी गिट भंडार को स्वीकार करना चाहते हैं, तो सबसे अच्छा शर्त यह सुनिश्चित करने के लिए संभव है कि यह एक वैध यूआरआई है, और उसके बाद git या एक गिट लाइब्रेरी का उपयोग करें ताकि यह सुनिश्चित किया जा सके कि उस यूआरआई में वास्तविक रेपो पहुंच योग्य हो।

30

मैं ऑनलाइन दूरस्थ खजाने के लिए निम्नलिखित नियमित अभिव्यक्ति का उपयोग कर रहा:

((git|ssh|http(s)?)|([email protected][\w\.]+))(:(//)?)([\w\[email protected]\:/\-~]+)(\.git)(/)?

View on Debuggex

Regular expression visualization

+5

मैं यहां एक रेगेक्स स्टेटमेंट की तलाश में आया था इसलिए मुझे उस पर समय बिताना नहीं था और मुझे सबसे अच्छा रेगेक्स डीबगर मिला बनाया गया। धन्यवाद। – blockloop

+0

मैं डीबगेज के बारे में सहमत हूं। दुर्भाग्यवश, उपरोक्त अभिव्यक्ति में समूह 4 "गिट" के अलावा अन्य उपयोगकर्ताओं का सामना नहीं करता है। –

+0

जावास्क्रिप्ट उपयोग के लिए थोड़ा सा tweak: /((git|ssh|http(s)?)|([email protected][\w.]+))(:(\/\/)?)([\[email protected]: /\-~]+)(\.git)(\/)?/ – Alexee

1

FYI करें मैं मालिक और रेपो के लिए एक regex बनाने जिथब या बिटबकेट से:

हालांकि कई असहमत
(?P<host>([email protected]|https://)([\w\[email protected]]+)(/|:))(?P<owner>[\w,\-,\_]+)/(?P<repo>[\w,\-,\_]+)(.git){0,1}((/){0,1}) 

Debuggex Demo

संबंधित मुद्दे