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

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

나는 사용한다정규식 친구정규식을 프로토타이핑하고 디버깅합니다. RegEx Buddy를 사용하면 여러 가지 정규식 엔진 유형(.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE 등) 중에서 선택할 수 있습니다.

bash는 어떤 정규식 엔진을 사용합니까(예: in ifcase문)? 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가 될 것입니까?

답변1

bash(및 일반적인 POSIX 쉘)는 명령문에서 정규 표현식을 사용하지 case않지만글로벌 모드.

연산자를 사용하는 정규 표현식에 대한 지원이 제한됩니다 =~. 자세한 내용은 다음을 참조하세요.http://mywiki.wooledge.org/BashGuide/Patterns,
이는 bash확장 정규식(ERE)을 사용함을 의미합니다.

답변2

ifBash는 및 명령문에서 위의 정규식 유형을 사용하지 않습니다 case.

대신, 어떤 종류의 정규 표현식보다 덜 강력한 쉘 글로브 모드를 사용합니다. 상대적으로 새로운 버전의 bash에서는 (선) 앵커가 없지만 부정을 포함하는 정규식과 표현적으로 동일하지만 구문이 위의 정규식 유형과 다른 확장된 glob 패턴의 사용을 허용합니다.

shopt -s extglob 그러나 확장 쉘 glob은 먼저 쉘 스크립트에서 또는 대화식으로 사용해야 합니다.

[[ ]]조건부 명령 내의 특별한 위치에서 =~이진 관계를 사용하면 오른쪽의 확장 정규식 ERE에 대해 왼쪽의 문자열을 확인할 수 있습니다.

답변3

링크된 Bash 가이드에 따르면 Bash(버전 3.0 이상)는 다음을 사용합니다.확장 정규식(ERE)방언. "

방언에 대한 더 많은 정보를 찾을 수 있습니다여기.

관련 정보