![기본 정규식은 셸의 경로 이름 확장과 동일합니까? [복사]](https://linux55.com/image/83916/%EA%B8%B0%EB%B3%B8%20%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%80%20%EC%85%B8%EC%9D%98%20%EA%B2%BD%EB%A1%9C%20%EC%9D%B4%EB%A6%84%20%ED%99%95%EC%9E%A5%EA%B3%BC%20%EB%8F%99%EC%9D%BC%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
정규식을 배우고 있는데 기본식과 확장식으로 나누어져 있습니다.
기본 정규식(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로만 구성된 파일 이름 일치 시도).