私は次のように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であるに違いありません。
今、2つの質問があります。
- 適性はGNU EREを使用しますか?
- PCREを受ける能力を得る方法はありますか?
誰かが私のためにこれを明確にできることを願っています。
答え1
まあ、man aptitude
次の行がいっぱいです。
(適性参照マニュアルの「検索モード」セクションを参照)
私のDebianのマニュアルページにはそのようなセクションはなく、info
そのページにも見つかりません(同じマニュアルページだけが提供されています)。 Googleを検索して見つけましたこれ、説明する
ほとんどのテキスト検索(パッケージ名、説明など)は、大文字と小文字を区別しない正規表現を使用して行われます。これは、検索で正規表現メタ文字[12]をバックスラッシュにエスケープする必要があることを意味します。たとえば、「g++」を見つけるには、「g\+\+」パターンを使用する必要があります。
[12]正規表現メタ文字には、「+」、「-」、「.」、「(」、「)」、「|」、「[」、「]」、「^」、「$」、および「?」が含まれます。これらのうちのいくつかは適性メタ文字でもあるため(例えば)リテラル「|」を入力するには、「\~|」で2回エスケープする必要があります。
'regex'はページへのリンク切れですtao_regexps
。
答え2
何が間違っていますか:
aptitude search '?version(CURRENT) ^libdb[1-9] ! -'
必要に応じてシンプルで複雑にします。
ありがとう