問題タブ [boost-regex]

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.

0 投票する
2 に答える
907 参照

c++ - Win32 で icu u32_regex メモリ リーク/キャッシュでブースト

オプションの ICU サポートを有効にしてブースト正規表現クラスを使用すると (詳細についてはブーストのドキュメントを参照)、メモリ リークが発生したり、リセット/クリーンアップできないメモリのキャッシュが発生したりするようです。

ブーストユニットテストフレームワークがメモリリークを報告しないように、キャッシュをクリアする方法を知っている人はいますか?

私の問題の詳細は次のとおりです:-

icu 4.2.1 のブースト 1.42 でこれを試しましたが、たまたま同じ結果でシステムに構築したので、ブースト 1.47 icu 4.8.1 に変更することで解決される問題ではないと思います。最新バージョン。

次のコード (Test.cpp) のコンパイル:-

次の方法でコマンドラインからコンパイルできます:-

マシンのヘッダー/ライブラリへの適切なパス

適切なブースト dll がパスされていない場合は、test.exe を含むディレクトリにコピーします (boost_regex-vc100-mt-gd-1_45.dll および boost_unit_test_framework-vc100-mt-gd-1_45.dll)。

上記の手順の test.exe を実行すると、次のようになります:-

2 番目のブロックの先頭に名前があるため、icu が実際にここで犯人であると推測しています。

最初のテスト (つまり、u32_regex ではなく標準の正規表現を作成するだけ) を実行しただけでは、メモリ リークは検出されませんでした。

複数の u32_regex をテストに追加しても、メモリ リークが増えることはありません。

icu のドキュメントに従って、u_cleanup() 呼び出しを使用して icu キャッシュをクリーンアップしようとしました。ICU の初期化と終了のセクションを参照してください。

しかし、私は icu ライブラリにあまり詳しくありません (実際には、Unicode 対応の正規表現サポートが必要だったので使用しているだけです)。正規表現 dll をブーストします。

繰り返しますが、問題は次のように見えます:-

オプションの icu サポートを使用してコンパイルされた dll で正規表現をブーストします (これは icu への静的リンクを使用していると確信していますが、ここでは間違っている可能性があります)。

u_cleanup() を呼び出すことができるようにテスト プログラムで icuuc.lib にリンクすると、boost regex ライブラリを介してロードされた ICU のインスタンスが保持するメモリに影響を与えないように見えます (そうであればかなり奇妙です)。

正規表現ライブラリに呼び出しが見つかりません。これにより、実際に呼び出しを行う場所である ICU データをクリーンアップするように要求できます。

0 投票する
2 に答える
390 参照

c++ - Boost :: Regexの使用に関する問題(コンソールがフリーズするだけです)

何らかの理由でboost::regexがアプリケーションをオーバーロードし、エラーなしでフリーズしますが、正常にコンパイルされます。たとえば、このコードはフラットに失敗します。私は何が間違っているのですか?DLLエラーかどうかを確認するために1.47をブーストするように更新しましたが、それでも機能しません。boost :: regexをテストするためのサンプルプログラムを入手できますか?

0 投票する
1 に答える
78 参照

c++ - Boost RegEx: 具体的な質問

私はこの表現を使用しようとしています:

私のコードでは、\ を 2 番目の \ でエスケープしていることに注意してください。

以下の文字列で検索する場合。私は近いと思いますが、葉巻はありません。上記の式が下のテキストで一致を見つけることができるようにしたい. どこが間違っていますか?

使用したリソース:

  1. http://www.solarix.ru/for_developers/api/regex-en.html

  2. http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/introduction_and_overview.html

  3. http://www.regular-expressions.info/reference.html


アップデート

コメント助かりました。記録保持の目的で、正規表現の習得に役立った正規表現サイトを私のスレッドに投稿してくれる人を今でも見たいと思っています。とにかく、私のコード (主にブースト Web サイトからコピーされたもの) は.

うまくいくようです。ただし、お気に入りのサイトへの回答投稿を受け入れて、初心者にいくつかのポインターを提供できるようにしてください =)。

0 投票する
1 に答える
1945 参照

c++ - 循環バッファイテレータの中間値を格納する方法は?

ブースト循環バッファでブースト正規表現を使用していて、一致が発生する位置を「記憶」したいのですが、これを行うための最良の方法は何ですか?以下のコードを試しましたが、「end」は常に同じ値を格納しているようです。たとえば、前の「終了」から最新の「終了」までトラバースしようとすると、機能しません。

}

0 投票する
0 に答える
274 参照

boost - DYN_LNK と USE_DLL と USE_LIB をブースト

次の定義の違いは何ですか:

(正規表現は任意に選択されました)?

libboost*.libプロジェクトを、boost*.libboost*.dllファイルに自動リンクするのはどれですか? 上記のファイルの違いは何ですか。

0 投票する
2 に答える
833 参照

c++ - ブースト正規表現を使用したバイナリ データの照合

ブースト正規表現は、特定のバイナリ入力のバイナリ データと一致できますか?

例:
バイナリ形式で入力:
0x01 0x02 0x03 0x04 0x05 0x01 0x02 0x03 0x04 0x08

一致するバイナリ表現:
0x01 0x02 0x03 0x04

この場合、2 つのインスタンスが一致する必要があります。

どうもありがとう!

0 投票する
2 に答える
161 参照

regex - ブースト正規表現の構築

次の文字列のすべての数字と一致させたい:

ただし、何らかの理由で以下boost::regexが機能しません。

どうしたの?

編集:関連コードの投稿:

出力:

また、ファイルの内容を文字列に投稿します。

0 投票する
3 に答える
10023 参照

c++ - Boost.Regex と C++11 正規表現

誰かが2つの違いを説明できますか? 今学ぶならどっちがいい?知識はどのようにして一方から他方へ、またはその逆に伝達されるのでしょうか?

0 投票する
3 に答える
1873 参照

c++ - 引用符内の区切り文字を除外して文字列をトークン化する

最初に、私は SO でこの問題に対する他のすべての解決策を徹底的に調べました。それらは非常に似ていますが、私の問題を完全に解決するものはありません。

ブースト正規表現を使用して、引用符 (引用符で囲まれたもの) を除くすべてのトークンを抽出する必要があります。

私が使用する必要があると思う正規表現は次のとおりです。

しかし、次のエラーが表示されます。

名前付きマークはすでに存在します

C# 用に投稿されたソリューションは、重複した名前付きマークで機能するようです。これは、他のマークとの OR 式であるためです。

引用符で囲まれていない限り、スペースで分割する正規表現

0 投票する
2 に答える
189 参照

c++ - 外部ソースからブースト正規表現を設定する

ログを解析する必要があり、正常に動作する正規表現を使用していますが、構成ファイルから正規表現を設定する必要があり、ここに問題があります。

そして、構成変数から設定しようとしたときに同じ正規表現が機能しない理由が本当にわかりません。

どんな助けでも大歓迎です(: