정규식을 배우고 있는데 기본식과 확장식으로 나누어져 있습니다.
기본 정규식(BRE)은 메타문자를 사용합니다 [ ] ^ $ . *
.
grep
명령에 따라 잘 작동합니다 . 그러나 ls
, 또는 다른 명령을 사용할 때도 echo
잘 작동합니다 . (예를 들어, ls -al [abc]*.txt
)
그런데 경로명 확장에 관한 부분을 배웠을 때 BRE의 메타 문자를 사용했습니다.
그래서 나는 그들이 같다고 생각합니다. 맞아?
답변1
경로명 확장^
, $
, 또는 특별한 의미는 없습니다 .
.
*
BRE의 문자 또는 그룹은 0개 이상의 반복과 일치합니다(따라서a*
→,
a
,aa
,aaa
, …).*
선행 문자에 관계없이 경로 이름 확장의 모든 문자열과 일치합니다(따라서a*
→a
,ab
,a !!! and any ?? string whatsoever
, ... -노트: BRE와 일치하는 빈 문자열과 일치하지 않습니다a*
.) 에 대해서도 마찬가지입니다?
.- in의 부정은
[]
BRE를 선행하고 경로 이름 확장을 선행하여^
수행됩니다 .!
.
.
경로 이름에 특별한 의미가 없는 BRE의 모든 문자와 일치합니다.무늬. 그것은 의미가 있습니다 일치, 그러나 패턴 자체에는 없습니다.
일부 표면적인 유사점을 제외하고는 매우 다릅니다. BRE에서는 일부 작업이 가능하지만 경로 이름 일치에서는 불가능합니다(예: a
s로만 구성된 파일 이름 일치 시도).