一尘不染

点正则表达式搜索

python

我需要找到PyPI与特定正则表达式匹配的所有软件包:

^django-.*?admin.*$

基本上,包的名字应该与启动django-,并有admin后话。例如,以下软件包应匹配:

django-redis-admin
django-admin-ckeditor 
django-admintools-bootstrap

我可以做pip search django-,但是有很多我不感兴趣的软件包。

是否pip提供通过正则表达式查找软件包的方法?或者,我应该只是通过管道django-传递结果grep来过滤掉无关的包?

此外,可能是一个的“交集” pip search django-,并pip search admin有助于太。


阅读 289

收藏
2021-01-20

共1个答案

一尘不染

alecxe,我相信这是您要寻找的一线客。

pip search django | grep -P "^django-(?=[-\w]*?admin)[-\w]+"

如下面评论中铬酸盐所建议的那样,您可以根据需要轻松地通过管道进行排序。

pip search django | grep -P "^django-(?=[-\w]*?admin)[-\w]+" | sort

让我知道您是否需要任何调整。

说明

在将命令|输出重定向pip<stdin>grep命令的管道之后,我们在Perl模式下输入grep
-P。这是必要的,否则我们将不被允许使用前瞻。

我们将模式锚定在字符串的开头,^并立即将其django-作为文字匹配。然后我们断言(超前),在这个位置上,我们将能够匹配任意数量的破折号或单词字符(包括数字和下划线),然后是文字字符串admin

做出此断言(这是一种验证形式)后,我们现在现在尽可能地匹配破折号和单词字符,这将使我们到达模块名称的末尾。

有几种表达方式,对于这种简单的模式,变化很大程度上取决于喜好或情绪。

如果您想更改此设置以匹配django-包含的模式someword,只需将其替换adminsomeword

输出

    django-smoke-admin        - django-smoke-admin tests that all admin pages for all registered models responds correctly (HTTP 200).
    django-adminskin          - UNKNOWN
    django-admin-exporter     - Simple admin actions to download/export selected items in CSV, JSON, XML, etc.
    django-treeadmin-fork-alt-storage - Tree UI for mptt-managed models, extracted from FeinCMS. This is a fork with support for alternative storage engines
    django-relatedadminwidget - Get edit and delete links in your django admin. A utility class to let your model admins inherit from.
    django-admin-langswitch   - Adds easy language switch in admin
    django-authy-admin        - A drop in replacement for django's default admin site that provides two-factor authentication via authy's REST API.
    django-frontendadmin      - A a set of templatetags to allow an easy and unobstrusive way to edit model-data in the frontend of your page.
    django-admin-app-names-singleton - Django admin enhancer
    django-mobileadmin        - The Django admin interface for mobile devices.

(列表继续。)

顺便说一句,查看点子搜索文档,如果没有管道,我看不到这样做的方法。

2021-01-20