I'm working on a commercial (not open source) C++ project that runs on a linux-based system. I need to do some regex within the C++ code. (I know: I now have 2 problems.)
QUESTION: What libraries do people who regularly do regex from C/C++ recommend I look into? A quick search has brought the following to my attention:
1) Boost.Regex (I need to go read the Boost Software License, but this question is not about software licenses)
2) C (not C++) POSIX regex (#include <regex.h>, regcomp, regexec, etc.)
3) http://freshmeat.net/projects/cpp_regex/ (I know nothing about this one; seems to be GPL, therefore not usable on this project)
Thanks.
Source: Tips4all
Boost.Regex is very good and is slated to become part of the C++0x standard (it's already in TR1).
ReplyDeletePersonally, I find Boost.Xpressive much nicer to work with. It is a header-only library and it has some nice features such as static regexes (regexes compiled at compile time).
In C++ projects past, I have used PCRE with good success. It's very complete and well-tested since it's used in many high profile projects. And I see that Google has contributed a set of C++ wrappers for PCRE recently, too.
ReplyDeleteBoost has regex in it.
ReplyDeleteThat should fill the bill
Thanks for all the suggestions.
ReplyDeleteI tried out a few things today, and with the stuff we're trying to do, I opted for the simplest solution where I don't have to download any other 3rd-party library. In the end, I #include <regex.h> and used the standard C POSIX calls regcomp() and regexec(). Not C++, but in a pinch this proved to be the easiest.
C++ has a builtin regex library since TR1. AFAIK Boost's regex library is very compatible with it and can be used as a replacement, if your standard library doesn't provide TR1.
ReplyDeleteI've personally always used boost.regex (although I don't have much need for regex in C++). Microsoft Labs has a regex library too, called GRETA: http://research.microsoft.com/projects/greta/. Apparently it's very fast and features a whole Perl 5 syntax. I haven't used it, but you may want to test it out.
ReplyDeleteYou can also look at fast regex library that was developed at Yandex search engine for doing fast matches of thousands of patterns against huge amounts of data.
ReplyDeleteI faced a similar situation and ended up using Henry Spencers Regexp Engine
ReplyDeletehttp://www.codeproject.com/KB/string/spencerregexp.aspx
Noone here said anything about the one that comes with C++0x.
ReplyDeleteIf you are using a compiler and the STL that supports C++0x you could just use that instead of having another lib in your project.