2011-09-28 3 views
13

두 사람의 차이점을 설명해 주시겠습니까? 지금 당장 배우는 것이 더 낫겠습니까? 지식은 어떻게 하나에서 다른쪽으로 그리고 그 반대로 이동합니까?Boost.Regex 대 C++ 11 Regex

+5

표준 방법을 배우는 것은 결코 나쁜 일이 아닙니다. –

+3

표준 라이브러리 C++ 11 Regex는 GCC에서 아직 완전히 구현되지 않았으므로주의해야합니다. http://stackoverflow.com/questions/4716680/c0x-regex-in-gcc –

답변

10

부스트 regex 라이브러리를 C++ 0x로 만들었으므로 서서히 부스트에서 제거 될 것이라고 추측합니다. 그러나 boost를 사용하는 것은 C++ 0x를 지원하지 않고 컴파일러에서 사용할 수 있기 때문에 좋습니다. 그래서 그것은 당신에게 달려 있습니다.

+3

예. 그렇지만 한 Boost.Regex 기반 프로그램을 C++ 11 Regex로 간단하게's/boost ::/std ::/g'로 만들었습니까? –

+0

@Rob : 당신이 Boost.Regex의 ICU 지원을 사용하는지 여부에 달려 있다고 생각합니다. – ildjarn

7

하나의 큰 차이점은 C++ 11은 정규식에 대한 Perl 구문을 제공하지 않는다는 것입니다. 따라서 Perl 구문을 사용하는 경향이 있다면 Boost :: Regex 라이브러리를 사용해야합니다.

+0

예 regex에 대한 Perl 구문이 있습니다. ECMAScript regex가 있고 ECMAScript 정규 표현식은 Perl 정규 표현식과 같습니다. http://ecma-international.org/ecma-262/5.1/#sec-15.10 – BenjaminB

+5

@ Ubiquité 올바르지 않습니다. 귀하가 제공 한 링크는 "모델을 통해"라고 말합니다. 에 대한 [C++ TR1 제안] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1429.htm#syntax_discussion)은 "기반"이라는 매우 유사한 표현을 사용합니다. ECMAScript 정규식은 Perl 정규식과 동일하지 않습니다. Perl은 더 많은 기능과 다른 구문을 제공합니다. –

+1

@PatrickNiedzielski : 맞습니다. 불행히도 Boost.Regex는'perl'을'ECMAScript'와 동등한 것으로 정의했습니다. http://www.boost.org/doc/libs/1_53_0/libs/regex/doc/html/boost_regex/ref/ syntax_option_type/syntax_option_type_perl.html. – kennytm

0

적어도 Visual Studio 2013에서이 이름과 관련 이름 (cmatch, regex_match)은 두 네임 스페이스에서 모두 동일합니다. 그들은 또한 같은 (또는 비슷한?) 인터페이스를 가지고 있습니다.

그래서 네임 스페이스를 변경하면 경고와 오류없이 다른 정규 표현식으로 같은 코드가 컴파일됩니다. 그리고 그것은 물론 똑같이 작동해야합니다.

P. 그것은 C + + 11 및 부스트 :: regex 일부인 타사 라이브러리가 있기 때문에 나는 std :: regex 선호 할 것이다. 몇 년 후 boost가 boost :: regex에 대한 지원을 제거 할 것이라고 확신합니다.