問題タブ [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 に答える
358 参照

c++ - Boostによる正規表現トークン化は、単語の最後の文字のみを取得します

Boostで単純な文構造を解析しようとしています。Boost を使用するのはこれが初めてなので、これは完全に間違っている可能性があります。私がやりたいことは、この形式の文字列のみを受け入れることです:

  • 文字で始める必要があります (大文字と小文字は区別されません)
  • 含有することができます:
    • 英字
    • 数字
    • アンダースコア
    • ハイフン
  • 他のすべての文字は区切り文字として機能します

どの文字が区切り文字なのかわからないので (たくさんあるかもしれません)、それに敏感な正規表現を作ろうとしました。唯一の問題は、各単語の最後の文字しか取得できないことです。これにより、私の正規表現は正しいと信じるようになりますが、ブーストの使用はそうではありません。これが私のコードです:

これは、 Boost Web サイトで見つけたものをモデルにしています。mf コードを作成するためのテンプレートとして、最後の例 (ページの下部) を使用しました。この例では、テキストは文字列型のオブジェクトです。

私の正規表現は正しいですか?ブーストを正しく使用していますか?

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

c++ - Boost を使用した regex_search および regex_replace

行内の「$」ペアで区切られたいくつかの文字列間でループしようとしています。すべてのマーカーが置き換えられた出力行を取得するために、各一致を特定の値に置き換えますが、2番目の一致でスタックしています'新しい置換値を連結する方法がわからない:

問題は outLine.append( t.str() ) にあります。これは、最初の一致の後、outLine が次の一致の前の文字の一部を既に保持しているため、連結が適切に行われないためです。

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

regex - Boost(1.34)正規表現構文のバグ

ある程度のドキュメントを読みましたが、VS2010に付属している現在のバージョンについて詳しく知っています。しかし今のところ、私はubuntu 8.04で立ち往生しており、1.34をブーストしていて、奇妙な種類のエラーが発生しています。誰かが私が間違っていることを言うことができますか?これがregex_searchboostv1.34のマニュアルページです。

これが私のコードで行っていることです:


コンパイルエラーは次のとおりです。

エラー:'regex_search(__ gnu_cxx :: __ normal_iterator、std :: allocator >>、__gnu_cxx :: __ normal_iterator、std :: allocator >>、boost :: match_results <__ gnu_cxx :: __ normal_iterator、std::allocatorを呼び出すための一致する関数がありません>、std :: allocator、std :: allocator >> >> >>&、boost :: regex&、boost :: regex_constants :: match_flag_type&) '

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

c++ - POST本文/GET引数を解析する方法は?

したがって、このような文字列login=julius&password=zgadnij&otherArg=ValueをN個の引数で解析する必要があり、各引数には値があります。このようなtiGET引数とPOSTリクエストを見つけることができます。では、Boostを使用してそのような文字列のパーサーを作成するにはどうすればよいですか?

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

c++ - 正規表現を使用した検索C++

私はBoost.Regexを使用して、次のようなことを実現しています。「|」を検索する 次に、「|」の左側を取ります 右の部分と同じように、文字列を入れます。

この後、s1は「who」になり、s2は「sort」になります。
よく覚えていれば、Pythonで可能でしたが、Boostで正規表現を使用してそれを行うにはどうすればよいですか?

ありがとうございました。

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

c++ - boost::regex で sub-match_results を取得する

ねえ、私がこの正規表現を持っているとしましょう:(test[0-9])+

そして、私はそれを以下と照合します:test1test2test3test0

今、(最後の出現)what[1]になります。test0, 2 と 3 も取得する必要があるとしましょうtest1: どうすればよいでしょうか?

注: 実際の正規表現は非常に複雑で、1 つの全体的な一致を維持する必要があるため、正規表現の例を に変更しても機能し(test[0-9])ません。

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

c++ - Boost Regex を使用した C++ 正規表現

C++ で文字列を取り、内部に含まれるすべての IP アドレスを見つけて、それらを新しいベクトル文字列に入れようとしています。

正規表現に関する多くのドキュメントを読みましたが、この単純な関数の実行方法を理解できないようです。

この Perl 式を使用して、任意の IP アドレスを見つけることができると思います。

しかし、私はまだ残りをどうするかについて困惑しています。

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

php - PHP の正規表現。単語を検索し、単語の後にデータを返す

依頼された作業の正規表現を作成しようとしていますが、十分に効率的にすることができません。
目的は、以下を可能な限り効率的にすることです。
目標番号 1. 文末 (ドット、3 つのドット、感嘆符など) を使用してすべてのテキストを区切ります。
Objective number 2 文字列 'em' の後に表示されるすべての数字を取得する
これは、考えられる小さな文字列とその正規表現の例です。(本当のものは本当にハッジすることができます)
正規表現: old:
(?:[^.!?:]|...)(?:(?:[^.!?:]|...)*?em (\d+))*
new:
(?:[.!?]|[.][.][.])(?:(?:[^.!?]|[.][.][.])*?\bem\b (\d+))*

文字列に対して機能します(作成したばかりです)
(最初に . を挿入します)

.Foi visto que a batalha em 1939 foi. Claro que a data que digo ser em 1939 é uma farsa. Em 1938 já (insert em 1910) não havia reis.

私が望んでいたのは、バックトラックする必要がないため、バックトラックしない正規表現を作成することです。そのようにすることで、これに必要な処理を節約できると思います.30秒から20秒、さらには10秒に短縮できます! this1 のためだけに、完了するのに 1 秒かかります。
追加:
回答のThnxが失敗しないものになりました。しかし、それでもバックトラックが多すぎます。解決策はありますか?

追加 (削除された質問の 1 つに回答するため):
残念ながら、サンプル データがありません。これを行うように依頼された人は、サンプル データも持っていないと言いますが、これは「昨日まで」行う必要があります。このテキストで可能な限り効率的に機能するものを教えていただければ、それを使用して、必要に応じてこの作業に固有の何かを隠すことができると確信しています. そうでなければ、ここでもう一度尋ねます。

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

c++ - 正規表現を使用して別のテキストに別のテキストを挿入しますか?

2つのテキストファイルがあります。</sup><sup>タグの間の最初のテキストからテキストを取得し、の間の別のテキストファイルに挿入したいと思います{}

より良い例(辞書のようなもの)

テキストはランダムですが、あなたは私が欲しいものを見ることができます。Perlが最適です。

だから取得

に貼り付けます

テキストAとBが順番に並んでいるので、最初</sup>text<sup>にテキストAから読み取り、一時的に保存し、この行をテキストAから削除し{}、テキストBの最初の空きスロットに配置して、最初からやり直すことができれば素晴らしいと思います。順序が保存されるため、番号は一致します。私の英語でごめんなさい:)ありがとう!

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

c++ - boost::regexトリムのヘルプ

この正規表現は、改行で文字列をトリミングします。
両端のみをトリミングし、中央の改行を保持したいと思います。