야생 매트

wildmat
야생 매트
개발자리치 솔즈
유형패턴 매칭

WildmatRich Salz에 의해 개발된 패턴 매칭 라이브러리입니다.Bourne 쉘에서 이미 사용되고 있는 와일드카드 구문에 근거하여 와일드매트는 정규 표현에서 일반적으로 제공되는 구문보다 단순한 구문을 사용하여 애플리케이션 간에 패턴을 일치시키는 통일된 메커니즘을 제공합니다.패턴은 일치 여부를 테스트할 때 각 문자열의 선두와 끝에 암묵적으로 고정됩니다.

2019년 6월 Rich Salz는 퍼블릭 도메인 [1]헌납 하에 GitHub에 지금은 없어진 라이브러리의 오리지널 버전을 출시했다.

패턴 매칭 조작

패턴과 일치 여부를 확인하는 송신원간의 엄밀한 1 대 1 매칭 이외의 5가지 패턴 매칭 조작이 있습니다.

  • 아스타리스크(*)는 0 이상의 문자의 시퀀스와 일치합니다.
  • 단일 문자와 일치하는 물음표(?)
  • 지정된 문자 집합입니다.문자 목록 또는 범위의 시작과 끝이 마이너스(또는 대시) 문자로 구분된 문자 범위 또는 목록과 범위의 조합으로 지정됩니다.대시가 세트의 시작 또는 끝인 경우 대시를 문자로 세트에 포함할 수도 있습니다.이 세트는 대괄호로 둘러싸여 있습니다.닫힘 대괄호(])가 세트의 첫 번째 문자일 경우 사용할 수 있습니다.
  • 세트의 부정.이 값은 열린 대괄호 안에 있는 테스트 문자열의 선두에 캐럿 문자(^)가 추가된 집합과 동일한 방식으로 지정됩니다(NNTP는 대체 문자를 지정합니다!).어느쪽인가를 실행하도록 실장을 설정할 수 있습니다).
  • 열린 대괄호([), 별표, 백슬래시 또는 물음표의 특별한 의미를 무효로 하는 백슬래시(\) 문자.두 개의 백슬래시를 순차적으로 실행하면 백슬래시가 특별한 의미가 없는 문자로 평가됩니다.

  • *foo*는 "foo"를 포함하는 문자열과 일치합니다.
  • mini*는 "mini"로 시작하는 모든 문자열과 일치합니다("mini" 문자열 자체 포함).
  • ?*는 3글자 이상의 문자열과 일치합니다.
  • [ 0 - 9a - zA - Z ]는, 모든 영숫자의 ASCII 문자와 일치합니다.
  • [^]-]는 괄호 또는 대시 이외의 문자와 일치합니다.

사용.

wildmat은 Salz 자신의 INN과 같은 NNTP 구현에서 가장 흔하게 볼 수 있으며 GNU tar와 Transmission같은 관련 없는 소프트웨어에서도 볼 수 있습니다.GNU tar는 1992년 9월에 와일드매트를 POSIX fnmatch glob matcher로 대체했습니다.초기 버전에서는 미닫이에서의 경계외 액세스가 가능했습니다.[[2] ]

원래 바이트 지향 와일드매트 구현에서는 멀티바이트 문자 집합을 처리할 수 없으며 검색되는 텍스트에 호환되지 않는 문자 집합이 여러 개 포함되어 있을 경우 문제가 발생합니다.IETF NNTP 워킹그룹에 의해 UTF-8 인코딩을 지향하는 와일드매트의 간이 버전이 개발되었습니다.의 일부입니다. RFC3977(섹션 4), 2006년 NNTP 표준.

UTF-8을 지원하는 새로운 INN에서는 와일드매트의 모든 기능을 지원하는 "uwildmat"이 추가되었다.Russ Allbery에 의해 실행된 이 2000년 개서에서는 원래 구현에서 OOB가 수정됩니다.단단히 감긴 C 루프는 더 작은 [3][4]문장으로 작성되었습니다.

Rsync에는 Wayne Davison에 의해 수정된 와일드매치로 알려진 GPLv3 라이선스의 와일드매트의 후손이 포함되어 있습니다.Git 버전 관리 시스템이 Import하여 활용합니다.UTF-8은 지원하지 않지만 OOB는 고정되어 있으며 문자 클래스 및 스타글로브(임의 [5]깊이의 경우 **)를 추가로 지원합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Salz, Rich (25 June 2019). "wildmat: The hoary classic wildmat pattern matcher; public domain". GitHub. Retrieved 25 November 2019.
  2. ^ Salz, Rich (25 June 2019). "wildmat.c". GitHub. Might not be robust in face of malformed patterns; e.g., "foo[a-" could cause a segmentation violation.
  3. ^ uwildmat(3)Linux 라이브러리 함수 매뉴얼
  4. ^ "uwildmat.c in trunk/lib – INN". inn.eyrie.org. Retrieved 27 November 2019.
  5. ^ "git/git: wildmatch.c". GitHub. 16 February 2022.

외부 링크