問題タブ [boost-xpressive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost Xpressive との大文字と小文字を区別しない一致
regex_match
大文字と小文字を区別しない一致を見つける関数を取得できません。が定義されboost::xpressive::regex_constants::icase
ていて、キャストを使用していても (Xpressive のメソッドにあいまいさはありません)、コンパイル エラーが発生します (VS2010):icase
エラー C2440: '型キャスト': 'const boost::xpressive::detail::modifier_op' から 'boost::xpressive::regex_constants::match_flag_type' に変換できません
再現するコード:
問題が何であるか知っていますか?
c++ - Boost Xpressive - この正規表現指数関数の失敗例はなぜですか?
次の形式を持つOSから読み取った文字列と照合するために、単純な正規表現を使用しています。
タイムスタンプ:{コンマ区切りの値のリスト}
タイムスタンプが符号なしの場合、値は符号なしです
これを行うには、boost::xpressive を使用して次の正規表現を使用していました。
成功した場合はすべて正常に機能します。ベンチマークでは、正規表現が次の文字列と一致するのに約 80usec かかることが示されています。
入力文字列のいずれかの値に負の値が含まれていると、パフォーマンスが大幅に低下します。値 4 が負の場合、正規表現が失敗を報告するのに 13 秒かかります。
value5 が負の場合、所要時間はさらに長くなります。
失敗した場合のパフォーマンスが非常に悪いのはなぜですか?
元の正規表現を次のように変更して問題を修正しました。
つまり、コンマ区切りのリストに対して非貪欲な一致を作成します。
変更されたバージョンでは、失敗のシナリオは成功のシナリオと同じくらい (またはわずかに優れています) 実行されます。
c++ - ブースト全体なしでboost.xpressiveを使用するには?
VC 2008 で正規表現を使用しようとしていますが、ブースト ライブラリ (または少なくともブースト ライブラリ全体) を使用できません。
boost.xpressive 内のファイルが他のブースト ディレクトリ内のファイルを使用しているのを見てきました。
好奇心として、boost.xpressive のこのチュートリアルでは、リンクから xpressive.zip をダウンロードする方法が提供されていましたが、これは使用できなくなりました。
xpressive.zip には xpressive の最小限の依存関係が含まれていると想定しています。
「最小限のポータブルboost.xpressive」はどこで入手できますか?
boost - セマンティック アクション内で構造体をベクターに取り込むために boost::xpressive を使用する方法
一致が検出されるたびにデータ構造体をベクターに挿入しようとしていましたが、コンパイルにも失敗しています。コードは次のとおりです。
内部でデータオブジェクトを使用しているため、「push_back」セマンティックアクションのコンパイルに失敗していますが、それを怠惰に使用することはできません (私にはわかりません)。
お願いします、誰かこれで私を助けてくれませんか?
注 - 残念ながら、私は MS VS 2010 (c++11 に完全に準拠していない) に縛られているため、可変個引数テンプレートと emplace_back ソリューションを使用しないでください。ありがとうございました。
c++ - recursive boost::xpressive のメモリ使用量が多すぎる
boost::xpressive ユーザーの皆さん、こんにちは。
boost::xpressive でいくつかの決定木を解析しようとすると、スタック オーバーフロー エラーが発生します。特定のサイズまでのツリーでは機能するようですが、「大きな」ツリーでは失敗します。ここで「大きな」とは約 3000 ノードを意味し、gdb のスタックは 133979 フレームの深さになります。どういうわけか正規表現を最適化する必要があると考えていますが、どこにも .* がないため、ここからどこに行くべきかわかりません。
ここで、s は質問に収まらない 75000 文字の文字列であるため、未定義のままです。これらの式を変更して、一致をより少ないスペースで実行するにはどうすればよいですか?