Czy ktoś mógłby wyjaśnić różnice między tymi dwoma? Które lepiej byłoby się teraz nauczyć? W jaki sposób transfer wiedzy z jednego do drugiego i na odwrót?Boost.Regex vs C++ 11 Regex
Odpowiedz
Biblioteka regex boost zrobiła to w C++ 0x, więc domyślam się, że powoli zostanie usunięta z boost. Jednak użycie boost jest dobre, ponieważ nadal można go używać z kompilatorami bez obsługi C++ 0x. Więc naprawdę zależy od ciebie.
Tak, ale można migrować Boost.Regex oparty na C++ 11 Regex z prostym 's/boost ::/std ::/g'? –
@Rob: Wyobrażam sobie, że to zależy od tego, czy korzystasz z pomocy Boost.Regex na OIOM. – ildjarn
Jedną z głównych różnic jest to, że C++ 11 nie udostępnia składni Perla dla wyrażeń regularnych. Tak więc, jeśli masz tendencję do używania składni Perla, musisz użyć biblioteki Boost :: Regex.
Tak, istnieje składnia Perla dla wyrażenia regularnego: Istnieje wyrejestrowanie ECMAScript i wyrażenie regularne ECMAScript jest takie samo, jak w przypadku wyrażenia Perl http://ecma-international.org/ecma-262/5.1/#sec-15.10 – BenjaminB
@ Ubiquité Nie jesteś poprawny. Podany link mówi "zamodelowany po". Propozycja [C++ TR1 dla
@PatrickNiedzielski: Masz rację, niestety Boost.Regex zdefiniował 'perl' jako ekwiwalent' 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
Przynajmniej w Visual Studio 2013 ta i powiązane nazwy (cmatch, regex_match) są takie same w obu obszarach nazw. Mają również ten sam (lub podobny?) Interfejs.
Po prostu możesz zmienić przestrzeń nazw i ten sam kod zostanie skompilowany z innym wyrażeń regularnych bez ostrzeżenia i błędów. I powinno działać tak samo.
P.S. Wolałabym std :: regex, ponieważ jest częścią C++ 11, a boost :: regex jest biblioteką innej firmy. Jestem pewien, że kilka lat później, boost usunie wsparcie dla boost :: regex.
- 1. C++ 11 Regex Matching
- 2. C++ 11 Regex Capture Groups By Name
- 3. C++ 11 Regex Znajdź identyfikator grupy przechwytywania
- 4. Nie pasuje z C++ 11 regex
- 5. C++ 11 regex: sprawdzanie, czy ciąg zaczyna się od regex
- 6. char vs wchar_t vs char16_t vs char32_t (C++ 11)
- 7. alignas specifier vs __attribute __ (wyrównane), C++ 11
- 8. C++ 11 rodzaj odliczenie vs const char *
- 9. regex: "(^ |)" vs "(| ^)"
- 10. C++ 11 regex_token_iterator
- 11. boost :: regex vs std :: regex - nie można znaleźć metody empty()?
- 12. Dlaczego ten C++ 11 std :: regex przykład rzuca wyjątek regex_error?
- 13. C++ 11 Odsyłacz do Constunkcji VS: semantyczny ruch
- 14. Jak zdobyć -std = C++ 11 w/libstdC++?
- 15. Python - pojedynczy vs wielowierszowego REGEX
- 16. Dlaczego funkcja Boost.Regex nie znajduje wielu dopasowań w jednym ciągu?
- 17. C++ nie może znaleźć regex nawet przy -std = C++ 11 macOSX
- 18. C++ 11 wydajność krotki
- 19. C++ 11 liczb losowych
- 20. C++ 11 predefiniowane makro
- 21. Mapa mutex C++ 11
- 22. C++ 11 alternatywa pthread_cond_timedwait
- 23. C++ 11: lambda, currying
- 24. C++ 11: Uniwersalny wykonawca
- 25. Biblioteka refleksyjna C++ 11
- 26. C++ 11 Destructor = delete
- 27. zainicjować mapę C++ 11
- 28. Wiele regex opcje z C# Regex
- 29. Pasek nawigacji zniknął, ponieważ VS 11 zainstalował
- 30. C# regex przechwytuje
Uczenie się standardowego sposobu nigdy nie jest złe. –
Należy zachować ostrożność w bibliotece standardowej C++ 11 Regex, ponieważ nadal nie jest ona w pełni zaimplementowana przez GCC: http://stackoverflow.com/questions/4716680/c0x-regex-in-gcc –