How can I convert a Perl regex to work with Boost::Regex?
What is the Boost::Regex equivalent of this Perl regex for words that end w开发者_运维知识库ith ing
or ed
or en
?
/ing$|ed$|en$/
...
The most important difference is that regexps in C++ are strings so all regexp specific backslash sequences (such as \w
and \d
should be double quoted ("\\w"
and "\\d"
)
/^[\.:\,()\'\`-]/
should become
"^[.:,()'`-]"
The special Perl regex delimiter /
doesn't exist in C++, so regexes are just a string. In those strings, you need to take care to escape backslashes correctly (\\
for every \
in your original regex). In your example, though, all those backslashes were unnecessary, so I dropped them completely.
There are other caveats; some Perl features (like variable-length lookbehind) don't exist in the Boost library, as far as I know. So it might not be possible to simply translate any regex. Your examples should be fine, though. Although some of them are weird. .*[0-9].*
will match any string that contains a number somewhere, not all numbers
.
精彩评论