1

制限があるため、boost (バージョン 1.54) で後読み式を \K に置き換える必要がありますが、機能しません。どうすればそれを行うことができますか、または何が問題ですか? この式を先読みで変換する他の方法はありますか?

"(?<=foo.*) バー" => "foo.*\K バー" ???

4

2 に答える 2

2

ここで少し遅い答え...

Boost.Regex 1.54 Documentationによると、Perl の \K の使用が可能であり、Boost.Regex を正規表現検索エンジンに使用する Sublime Text 3 でテストして確認しました。さらに、投稿したフォームのいずれにも明らかな構文エラーは見られません。私が考えることができる唯一のことは、文字列リテラル内で正規表現を使用していて、\. その場合、例の正しい正規表現は次のようになります。

foo.*\\K bar


そうでない場合、1 つの回避策 (明らかにパフォーマンスに影響があります) は、文字列を逆にしてから、可変幅の先読みを使用することです。あなたの例の修正された正規表現は次のようになります。

rab (?=.*oof)
于 2014-02-10T03:14:48.287 に答える