bash는 어떤 정규식 엔진 유형을 사용합니까?


12

정규식 을 프로토 타입하고 디버깅하기 위해 RegEx Buddy 를 사용 합니다. RegEx Buddy를 사용하면 다양한 정규 표현식 엔진 유형 (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE 등) 중에서 선택할 수 있습니다.

bash는 어떤 정규 표현식 엔진을 사용 합니까 (예 : in ifcasestatement)? Centos 5.5 32 비트 및 bash 3.2.25 (1)을 실행 중입니다.

[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

나는 그것이 GNU BRE 또는 GNU ERE 일 것이라고 추측하고 있습니까?

답변:



3

Bash는 ifcase문 에서 위의 종류의 정규 표현식을 사용하지 않습니다 .

오히려, 그것은 어떤 종류의 규칙적인 표현보다 덜 강력한 쉘 글로브 패턴을 사용합니다. 상대적으로 새로운 버전의 bash는 또한 (줄) 앵커가 없지만 부정 용어를 포함하지만 위에서 언급 된 정규 표현식 유형과 다른 구문을 사용하는 정규 표현식과 표현 적으로 동일한 확장 glob 패턴을 사용할 수 있습니다.

그러나 확장 쉘 글로브는 shopt -s extglob 쉘 스크립트 또는 대화식 으로 모두 사용하기 전에 활성화해야합니다 .

예외적 인 단일 위치, 즉 [[ ]]조건부 명령 내에서 =~이진 관계를 사용하면 오른쪽의 확장 정규 표현식 ERE와 비교하여 왼쪽의 문자열을 확인할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.