Pip Regulärer Ausdruck suchen

7

Ich muss alle Pakete auf PyPI finden, die mit einem bestimmten regulären Ausdruck übereinstimmen:

%Vor%

Grundsätzlich sollte der Paketname mit django- beginnen und admin word nachher haben. Zum Beispiel sollten die folgenden Pakete übereinstimmen:

%Vor%

Ich kann pip search django- machen, aber es gibt eine riesige Menge an Paketen, an denen ich nicht interessiert bin.

Bietet pip eine Möglichkeit, Pakete durch eine Regex zu finden? Oder sollte ich die Ergebnisse von django- auf grep umleiten, um irrelevante Pakete herauszufiltern?

Wahrscheinlich würde auch ein "Schnittpunkt" von pip search django- und pip search admin helfen.

    
alecxe 17.04.2014, 16:09
quelle

3 Antworten

14

aleckxe, ich glaube, das ist der Einzeiler, nach dem Sie suchen.

%Vor%

Wie von Chromat im Kommentar unten vorgeschlagen, könnten Sie einfach eine Pipe für eine sortierte Liste erstellen, wenn Sie möchten.

%Vor%

Lassen Sie mich wissen, wenn Sie irgendwelche Verbesserungen wünschen.

Erläuterung :

Nach der Pipe | , die die Ausgabe des Befehls pip auf <stdin> für den Befehl grep umleitet, geben wir grep im Perl-Modus -P ein. Dies ist notwendig, ansonsten wäre es nicht erlaubt, einen Lookahead zu verwenden.

Wir verankern das Muster am Anfang der Zeichenfolge mit ^ und stimmen sofort django- als Literal überein. Wir behaupten dann (Lookahead), dass wir an dieser Position eine beliebige Anzahl von Bindestrichen oder Wortzeichen (einschließlich Ziffern und Unterstrichen), gefolgt von der Literalzeichenfolge admin , finden könnten.

Nachdem wir diese Behauptung gemacht haben (was eine Form der Validierung ist), stimmen wir jetzt so viele Bindestriche und Wortzeichen wie möglich ab, was uns zum Ende des Modulnamens bringen sollte.

Es gibt mehrere Möglichkeiten, dies auszudrücken und für dieses einfache Muster sind die Variationen weitgehend eine Frage der Vorliebe oder Stimmung.

Wenn Sie dies jemals ändern wollten, um django- -Muster zu entsprechen, die someword enthalten, ersetzen Sie einfach admin durch someword .

Die Ausgabe :

%Vor%

(Die Liste geht weiter.)

Übrigens, wenn Sie sich die Pip-Suchdokumentation ansehen, Ich sehe keinen Weg, dies ohne das Rohr zu tun.

    
zx81 19.04.2014, 23:17
quelle
3

Scheint, dass die PyPI-Suchmethode regexp nicht unterstützt. Pip verwendet xmlrpc für Methodenaufrufe, aber ich konnte keine Informationen für Suche (oder eine andere) Methode finden, die nicht in docs oder sogar mit methodSignature oder methodHelp für PyPI XML-RPC Server sind. Sie können Ihr eigenes Skript als Alternative für Grep erstellen (aber es ist nicht sehr sinnvoll). Schnelles Beispiel:

%Vor%     
apopovych 19.04.2014 23:38
quelle
1

Ein Ansatz ist die oben erwähnte Methode, die die Pip-Suchergebnisse in grep pipettiert. Ich empfehle, dies zu verwenden, wenn Sie die Regex-Suche einmal oder selten verwenden möchten.

Wenn Sie diese Funktion jedoch regelmäßig benötigen, sollten Sie sich yip ansehen. Dies ist ein Paket, das ich für die Regex-Suche geschrieben habe andere nützliche Zusätze, die pips Suche nicht tun kann, wie das Anzeigen zusätzlicher Informationen (Größe, Upload-Zeit, Homepage oder Lizenz) oder das Färben der Ausgabe für Lesbarkeit.

    
Balázs Sáros 25.10.2016 07:57
quelle

Tags und Links