29 Stimmen

Regulärer Ausdruck für Git-Repository

Was ist der richtige reguläre Ausdruck für Git-Repositories?

Beispiel-Link: git@github.com:someone/someproject.git

also wird es sein wie [Benutzer]@[Server]:[Projekt].git

Server kann url oder ip sein Projekt kann auch andere als alphanumerische Zeichen wie '-' enthalten Ich bin mir nicht sicher, was die Rolle von '/' ist.

Irgendwelche Vorschläge?

0 Stimmen

Ich bin nicht davon überzeugt, dass ein regulärer Ausdruck die beste Lösung für das Parsen dieser Syntax ist, auch wenn viele anderer Meinung sind. Siehe blog.codinghorror.com/

58voto

Kel Solaar Punkte 3089

Ich verwende den folgenden regulären Ausdruck für entfernte Online-Repositories:

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

Ansicht auf Debuggex

Regular expression visualization

16voto

Jeet Punkte 36472

Git akzeptiert eine große Anzahl von Repository-URL-Ausdrücken:

* ssh://user@host.xz:port/path/to/repo.git/
* ssh://user@host.xz/path/to/repo.git/
* ssh://host.xz:port/path/to/repo.git/
* ssh://host.xz/path/to/repo.git/
* ssh://user@host.xz/path/to/repo.git/
* ssh://host.xz/path/to/repo.git/
* ssh://user@host.xz/~user/path/to/repo.git/
* ssh://host.xz/~user/path/to/repo.git/
* ssh://user@host.xz/~/path/to/repo.git
* ssh://host.xz/~/path/to/repo.git
* user@host.xz:/path/to/repo.git/
* host.xz:/path/to/repo.git/
* user@host.xz:~user/path/to/repo.git/
* host.xz:~user/path/to/repo.git/
* user@host.xz: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/

Für eine Anwendung, die ich geschrieben habe und die das Parsen dieser Ausdrücke erfordert ( YonderGit ) habe ich die folgenden (Python) regulären Ausdrücke gefunden:

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

Für die meisten Repository-URLs, denen man "in freier Wildbahn" begegnet, dürfte (1) ausreichen.

4voto

moylop260 Punkte 1191

FYI Ich mache eine Regex für erhalten Eigentümer und Repo von Github oder Bitbucket:

(?P<host>(git@|https://)([\w\.@]+)(/|:))(?P<owner>[\w,\-,\_]+)/(?P<repo>[\w,\-,\_]+)(.git){0,1}((/){0,1})

Debuggex-Demo

2voto

Ostap Brehin Punkte 2261

In der Bash können Sie dies ohne Regex tun:

basename https://github.com/code-co-ua/exercises-php

Ausgabe:

exercises-php

1voto

YOU Punkte 113320

Ungefähr

^[^@]+@[^:]+:[^/]+/[^.]+\.git$

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X