정규식 수량자는 찾기와 잘 작동하지 않습니다.

정규식 수량자는 찾기와 잘 작동하지 않습니다.

이 출력은 설명이 매우 간단합니다.

XXXXX@debianvirtualbox:~$ locate -r "^/var/lib/tomcat[0-9]/.*" -l 10
/var/lib/tomcat8/conf
/var/lib/tomcat8/lib
/var/lib/tomcat8/logs
/var/lib/tomcat8/webapps
/var/lib/tomcat8/work
/var/lib/tomcat8/webapps/ROOT
/var/lib/tomcat8/webapps/websight
/var/lib/tomcat8/webapps/ROOT/META-INF
/var/lib/tomcat8/webapps/ROOT/index.html
/var/lib/tomcat8/webapps/ROOT/META-INF/context.xml
jakub@maredadebianvirtualbox:~$ locate -r "^/var/lib/tomcat[0-9]{1,2}/.*" -l 10
XXXXX@debianvirtualbox:~$

-l 10Tomcat 설치 디렉터리와 일치하는 상위 10개 항목을 나열하려고 합니다 . 올바르게 사용 하면 [0-9]일치하지만 수량자를 추가하면 아무것도 일치하지 않습니다. 수량자 합계에도 동일하게 적용되지만 다음 표현식과 마찬가지로 잘 작동하는 것 같습니다.tomcat8[0-9]{1,2}+?*

^/var/lib/tomcat[0-9][0-9]*/.*

왜 이런 일이 발생하며 좋은 해결 방법은 무엇입니까?

답변1

(일명 ) --regex대신 ("p" 없이)를 시도해 보세요 . 이는 기본 정규식 대신 확장 정규식을 사용하라는 의미입니다.-r--regexplocate

locate --regex "^/var/lib/tomcat[0-9]{1,2}/" -l 10 

또는 이스케이프 {}with를 사용하여 \기본 정규식 내에서 특수하게 만듭니다.

관련 정보