Aptitude 正则表达式引擎

Aptitude 正则表达式引擎

我试图在 debian 档案中查找 libdb 的版本,如下所示:

$ aptitude search '~S~ndev$(~nlibdb~(\d~|-~)!~v~rnative)'

它没有按预期工作,所以我将“数字或破折号”的搜索模式更改为(格式错误?)括号模式

$ aptitude search '~S~ndev$(~nlibdb[[:digit:]-]!~v~rnative)'

哪个完成了这项工作。

对引擎盖下的引擎感到好奇,我尝试反向引用

$ aptitude search '~n~([[:digit:]]~)\1\>~rnative'

这也起作用并让我得出结论:它一定是 GNU ERE。

所以我现在有两个问题:

  1. aptitude 使用 GNU ERE 吗?
  2. 有没有办法获得接受 PCRE 的能力?

我希望有人能为我澄清这一点。

答案1

嗯,man aptitude充满了这样的行:

(请参阅 aptitude 参考手册中的“搜索模式”部分)

我的 Debian 的手册页中没有这样的部分,我也无法在该info页面中找到它(它只给了我相同的手册页)。谷歌搜索发现,这解释了

大多数文本搜索(包名称、描述等)都是使用不区分大小写的正则表达式执行的。这意味着您必须在搜索中对正则表达式元字符 [12] 进行反斜杠转义(例如,要查找“g++”,您应该使用模式“g\+\+”)。

[12] 正则表达式元字符包括:“+”、“-”、“.”、“(”、“)”、“|”、“[”、“]”、“^”、“$”和“ ?”。请注意,其中一些也是 aptitude 元字符,因此如果您想键入(例如)文字“|”,则必须对其进行双重转义:“\~|”。

“正则表达式”是指向名为 的页面的损坏链接tao_regexps

答案2

出什么问题了:

aptitude search '?version(CURRENT) ^libdb[1-9] ! -'

根据需要尽可能简单和复杂。

此致

相关内容