2010-04-17 2 views

답변

0

나는 "BRE 대 ERE"가 요즘 매우 유용한 구분이라고 생각하지 않습니다. awk 및 gnu grep과 같은 ERE 기반의 많은 도구와 MySQL 및 Oracle과 같은 데이터베이스의 정규식 지원이 있지만 BRE는 사실상 각주입니다.

또한 최신 프로그래밍 언어에 내장 된 정규 표현식은 기능면에서 ERE를 능가합니다. JavaScript 중 가장 강력하지 않은 JavaScript조차도 캡처 링하지 않는 그룹, 마지 막일 수있는 한정어 및 미리보기를 지원합니다. 정규 표현식을 "ERE vs. ECMA +"로 분류하는 것이 더 도움이 될 것입니다. 그러나 그것보다 훨씬 많은 것이 있습니다.

Tcl에서 프로그래밍하는 경우 단어 경계를 맞추려면 \y\m을 사용합니다. JavaScript에서는 [\s\S]을 사랑하게됩니다. 점 매치 - 개행 모드가 없기 때문입니다. Visual Studio에서 최소 일치를 위해 *?+? 대신 @#을 사용합니다. 그리고 자바는 철저히 현대적인 정규 표현식을 가지고 있지만, 정규식 리터럴과 원시/리터럴/축 어적 문자열 표기법이 없기 때문에 어쨌든 모든 백 슬래시를 보지 않아도 눈이 멀어집니다.

실제로 이것은 실제로 어쨌든 선택해야하는 것은 아닙니다. 일단 당신이 어떤 도구를 고용하기로 결정했는지, 당신이 요구하는 어떤 정규 표현식을 사용합니다.


심판 : Flavor comparison chart

1

분명히 단점이 있지만, 이것은 분명히 작성한 새로운 정규식에는 영향을 미치지 않습니다. 나는 항상 확장 정규 표현식을 사용한다. 사실, 이것은 요즘 대부분의 정규 표현식 라이브러리에 대한 기본값이므로, 그냥 플로우를 따라 가십시오.

1

환경 및 대상에 따라 다릅니다.

BRE가 점점 희박 해지고 있으며,이 시점에서 더 많은 도구가 BRE보다 ERE를 지원할 것으로 생각됩니다. grep (GNU 변형)조차 이제는 기본값이됩니다.

'BRE'라는 대부분은 실제로 BRE가 아닙니다. 메타 문자로 기능하는 것이 있다면 | + ?보다 BRE가 실제로는 BRE가 이스케이프되지 않습니다.

필자는 BRE가 예외이며 환경을 필요로하는 것이없는 한 피해야한다고 생각합니다.