开发者

How can I convert a Perl regex to work with Boost::Regex?

开发者 https://www.devze.com 2022-12-25 13:07 出处:网络
What is the Boost::Regex equivalent of this Perl regex for words that end w开发者_运维知识库ith ing or ed or en?

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消