制限があるため、boost (バージョン 1.54) で後読み式を \K に置き換える必要がありますが、機能しません。どうすればそれを行うことができますか、または何が問題ですか? この式を先読みで変換する他の方法はありますか?
"(?<=foo.*) バー" => "foo.*\K バー" ???
制限があるため、boost (バージョン 1.54) で後読み式を \K に置き換える必要がありますが、機能しません。どうすればそれを行うことができますか、または何が問題ですか? この式を先読みで変換する他の方法はありますか?
"(?<=foo.*) バー" => "foo.*\K バー" ???
ここで少し遅い答え...
Boost.Regex 1.54 Documentationによると、Perl の \K の使用が可能であり、Boost.Regex を正規表現検索エンジンに使用する Sublime Text 3 でテストして確認しました。さらに、投稿したフォームのいずれにも明らかな構文エラーは見られません。私が考えることができる唯一のことは、文字列リテラル内で正規表現を使用していて、\. その場合、例の正しい正規表現は次のようになります。
foo.*\\K bar
そうでない場合、1 つの回避策 (明らかにパフォーマンスに影響があります) は、文字列を逆にしてから、可変幅の先読みを使用することです。あなたの例の修正された正規表現は次のようになります。
rab (?=.*oof)