Pip 正则表达式搜索
Pip 正则表达式搜索
我需要找到所有与特定正则表达式匹配的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
的"交集"可能也会有所帮助。
Pip正则表达式搜索问题的出现原因是希望通过pip命令搜索特定模块名称的模块。解决方法是使用grep或egrep命令和正则表达式来过滤pip搜索结果。
解决方法中的代码示例如下:
pip search django | grep -P "^django-(?=[-\w]*?admin)[-\w]+"
这行代码首先使用pip搜索django模块,然后使用grep命令和正则表达式过滤结果。正则表达式的含义是匹配以"django-"开头的模块名称,并且在"django-"后面紧跟着任意数量的连字符或单词字符(包括数字和下划线),然后再跟着字面字符串"admin"。这样做的目的是筛选出包含"admin"的django模块。
另一个解决方法是使用egrep命令,代码示例如下:
pip search django | egrep "^django-[^ ]*?admin.*$" | sort
这行代码的正则表达式与前一个例子相似,只不过使用了不同的命令。此外,这个正则表达式还使用了一个限定符[^ ]*?来匹配任意数量的非空格字符,以确保模块名称不包含空格。
这两种方法都是通过使用正则表达式来对pip搜索结果进行过滤,以便只保留符合特定模式的模块名称。具体来说,这两种方法都是通过使用正则表达式的先行断言和匹配规则来实现的。
以上是关于Pip正则表达式搜索问题的解决方法的说明。解决方法中的代码示例可以帮助用户根据特定模式来过滤pip搜索结果,以获取所需的模块名称列表。
Pip正则表达式搜索的原因是因为PyPI搜索方法不支持正则表达式。Pip使用xmlrpc进行方法调用,但我在PyPI XML-RPC服务器的文档中找不到任何有关search(或任何其他)方法的信息,甚至没有methodSignature或methodHelp。你可以创建自己的脚本作为grep的替代方案(但这没有太多意义)。以下是一个快速示例:
from xmlrpclib import ServerProxy import re URL = 'https://pypi.python.org/pypi' TEST_RE = r"^django-.*?admin.*$" TEST = 'django-' def main(): pypi = ServerProxy(URL) res = pypi.search({'name': TEST}) for r in res: m = re.match(TEST_RE, r['name']) if m: print(m.group(0)) if __name__ == '__main__': main()
以上是一个使用Pip进行正则表达式搜索的示例代码。在这个示例中,我们使用了xmlrpclib的ServerProxy类来连接到PyPI服务器。然后,我们使用pypi.search方法来搜索名字包含'django-'的软件包。然后,我们使用re.match方法和正则表达式TEST_RE来匹配搜索结果中的软件包名称,并打印出匹配的结果。
这个示例代码可以作为使用Pip进行正则表达式搜索的解决方案。通过使用re模块中的正则表达式功能,我们可以在PyPI上搜索符合特定模式的软件包名称。这使得我们能够更精确地搜索和过滤软件包。
Pip是Python的包管理工具,可以通过pip search命令来搜索并安装Python包。然而,pip search命令默认只支持简单的字符串匹配,不支持正则表达式搜索。这就导致了一个问题,即如何在pip search中实现正则表达式搜索。
一种解决方法是将pip search的结果通过管道传递给grep命令,使用grep的正则表达式功能来实现搜索。这种方法适用于只需偶尔进行正则表达式搜索的情况。但是,如果需要经常进行正则表达式搜索,推荐使用yip这个工具。
yip是一个由balzss开发的工具,它在实现正则表达式搜索的同时,还提供了其他有用的功能。与pip search不同的是,yip可以显示额外的信息(如大小、上传时间、主页或许可证),并且可以对输出进行着色以提高可读性。
要使用yip,只需在终端中运行以下命令进行安装:
pip install yip
安装完成后,可以使用yip search命令来进行正则表达式搜索。以下是一个示例:
yip search "regex.*"
通过使用yip工具,我们可以在pip search中实现正则表达式搜索,并获得更多有用的功能。这对于经常需要使用正则表达式搜索的开发者来说,是一个非常有用的工具。