3

ingorで終わる単語のこの Perl 正規表現に相当する Boost::Regex は何edですかen?

/ing$|ed$|en$/

...

4

2 に答える 2

3

最も重要な違いは、C ++の正規表現は文字列であるため、すべての正規表現固有のバックスラッシュシーケンス(\wおよび\dは二重引用符で囲む必要があります("\\w"および"\\d"))

于 2010-03-29T12:48:09.617 に答える
2
/^[\.:\,()\'\`-]/

なるべき

"^[.:,()'`-]"

特別な Perl 正規表現区切り文字/は C++ には存在しないため、正規表現は単なる文字列です。これらの文字列では、バックスラッシュを正しくエスケープするように注意する必要があります (元の正規表現\\のすべての場合)。\ただし、あなたの例では、これらのバックスラッシュはすべて不要だったので、完全に削除しました。

他にも注意事項があります。私の知る限り、一部の Perl 機能 (可変長後読みなど) は Boost ライブラリには存在しません。そのため、正規表現を単純に翻訳することはできない場合があります。ただし、あなたの例は問題ないはずです。それらのいくつかは奇妙ですが。.*[0-9].*ではなく、どこかに数値を含む任意の文字列に一致しますall numbers

于 2010-03-29T13:47:46.583 に答える