적성 정규식 엔진

적성 정규식 엔진

나는 다음과 같이 데비안 아카이브에서 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. 적성은 GNU ERE를 사용합니까?
  2. PCRE를 받을 수 있는 능력을 얻을 수 있는 방법이 있나요?

누군가가 나를 위해 이것을 명확히 할 수 있기를 바랍니다.

답변1

음, man aptitude다음과 같은 줄이 가득합니다.

(적성 참조 매뉴얼의 "검색 모드" 섹션 참조)

내 데비안 매뉴얼 페이지에는 그러한 섹션이 없으며, info그 페이지에서도 찾을 수 없습니다(단지 동일한 매뉴얼 페이지만 제공됩니다). 구글 검색해서 찾았습니다이것, 설명하는

대부분의 텍스트 검색(패키지 이름, 설명 등)은 대소문자를 구분하지 않는 정규식을 사용하여 수행됩니다. 이는 검색에서 정규식 메타 문자 [12]를 백슬래시로 이스케이프해야 함을 의미합니다. 예를 들어 "g++"를 찾으려면 "g\+\+" 패턴을 사용해야 합니다.

[12] 정규식 메타 문자에는 "+", "-", ".", "(", ")", "|", "[", "]", "^", "$" 및 "?"가 포함됩니다. ". 이들 중 일부는 적성 메타 문자이기도 하므로 (예를 들어) 리터럴 "|"를 입력하려면 "\~|"로 두 번 이스케이프해야 합니다.

'regex'는 페이지에 대한 끊어진 링크입니다 tao_regexps.

답변2

무엇이 잘못됐나요:

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

원하는 대로 간단하고 복잡하게 만드세요.

감사합니다

관련 정보