適性正規表現エンジン

適性正規表現エンジン

私は次のように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つの質問があります。

  1. 適性はGNU EREを使用しますか?
  2. PCREを受ける能力を得る方法はありますか?

誰かが私のためにこれを明確にできることを願っています。

答え1

まあ、man aptitude次の行がいっぱいです。

(適性参照マニュアルの「検索モード」セクションを参照)

私のDebianのマニュアルページにはそのようなセクションはなく、infoそのページにも見つかりません(同じマニュアルページだけが提供されています)。 Googleを検索して見つけましたこれ、説明する

ほとんどのテキスト検索(パッケージ名、説明など)は、大文字と小文字を区別しない正規表現を使用して行われます。これは、検索で正規表現メタ文字[12]をバックスラッシュにエスケープする必要があることを意味します。たとえば、「g++」を見つけるには、「g\+\+」パターンを使用する必要があります。

[12]正規表現メタ文字には、「+」、「-」、「.」、「(」、「)」、「|」、「[」、「]」、「^」、「$」、および「?」が含まれます。これらのうちのいくつかは適性メタ文字でもあるため(例えば)リテラル「|」を入力するには、「\~|」で2回エスケープする必要があります。

'regex'はページへのリンク切れですtao_regexps

答え2

何が間違っていますか:

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

必要に応じてシンプルで複雑にします。

ありがとう

関連情報