기본 정규식은 셸의 경로 이름 확장과 동일합니까? [복사]

기본 정규식은 셸의 경로 이름 확장과 동일합니까? [복사]

정규식을 배우고 있는데 기본식과 확장식으로 나누어져 있습니다.

기본 정규식(BRE)은 메타문자를 사용합니다 [ ] ^ $ . *.

grep명령에 따라 잘 작동합니다 . 그러나 ls, 또는 다른 명령을 사용할 때도 echo잘 작동합니다 . (예를 들어, ls -al [abc]*.txt)

그런데 경로명 확장에 관한 부분을 배웠을 때 BRE의 메타 문자를 사용했습니다.

그래서 나는 그들이 같다고 생각합니다. 맞아?

답변1

경로명 확장^, $, 또는 특별한 의미는 없습니다 ..

  1. *BRE의 문자 또는 그룹은 0개 이상의 반복과 일치합니다(따라서 a*, a, aa, aaa, …). *선행 문자에 관계없이 경로 이름 확장의 모든 문자열과 일치합니다(따라서 a*a, ab, a !!! and any ?? string whatsoever, ... -노트: BRE와 일치하는 빈 문자열과 일치하지 않습니다 a*.) 에 대해서도 마찬가지입니다 ?.
  2. in의 부정은 []BRE를 선행하고 경로 이름 확장을 선행하여 ^수행됩니다 .!
  3. ..경로 이름에 특별한 의미가 없는 BRE의 모든 문자와 일치합니다.무늬. 그것은 의미가 있습니다 일치, 그러나 패턴 자체에는 없습니다.

일부 표면적인 유사점을 제외하고는 매우 다릅니다. BRE에서는 일부 작업이 가능하지만 경로 이름 일치에서는 불가능합니다(예: as로만 구성된 파일 이름 일치 시도).

관련 정보