問題タブ [string-matching]
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.
bash - 階層を定義する一致するプレフィックス (LCS) を使用してファイル名のリストを階層的に (レベル化) 配置する方法 - できればシェル ツールを使用する
ソース コード ディレクトリには、意味のあるファイル名が付けられています。例: AAAbbbCCddEE.h/.cxx : AAA、bb CC は、サブシステムの略語、または "...Print..." や "...Check..." のような単なる機能説明を参照できます。
コードベースが大きくなるにつれて、ディレクトリごとに一握り以上のファイルができます。特に新しい分野で何が行われているのかを知るだけでも気が遠くなります。
このコンテキストでは、名前と表示レベルとファイルを動的に最大に一致させることにより、すべてのファイル名を平準化する汎用ツールが役立ちます。レベルを構成するものは、一致するプレフィックスが別のファイルに存在するかどうかによって異なります。上記の例で、AAAbbbCCddFF.h/.cxx が同じディレクトリに存在する場合、AAAbbbCCddFF と AAAbbbCCEE の両方が同じレベル (深さ 4) の AAAbbbCCdd に属し、一緒に表示されます。
diff(ファイル名自体)とシェルツールで実行可能に見えます-同様の既存の参照は役に立ちますか?
javascript - Javascriptで正規表現match()の位置を返しますか?
Javascriptの正規表現match()の結果の文字列内の(開始)文字位置を取得する方法はありますか?
algorithm - 最初に発生する並列文字列照合アルゴリズム
率直に言って、これは宿題です。そうは言っても、それは非常にオープンエンドであり、この問題(または一般的な並列アルゴリズム)について考え始める方法についてのガイダンスはほとんどありません。完全な解決策ではなく、正しい方向へのポインタが欲しいのですが。役立つかもしれないどんな読書も同様に素晴らしいでしょう。
私は、並列アルゴリズムを使用して、大量のテキストで最初に出現するパターンを一致させる効率的な方法に取り組んでいます。パターンは単純な文字マッチングであり、正規表現は含まれていません。私はなんとかすべての一致を見つけるための可能な方法を思いついたが、それは私がすべての一致を調べて最初のものを見つけることを必要とする。
だから問題は、プロセス間でテキストを分割し、そのようにスキャンすることにもっと成功するでしょうか?または、j番目のプロセスがパターンのj番目の文字を検索する、ある種のプロセス同期検索を行うのが最善でしょうか?その後、すべてのプロセスが一致に対してtrueを返す場合、プロセスは上記のパターンに一致する位置を変更して再び上に移動し、すべての文字が一致するまで続行してから、最初の一致のインデックスを返します。
私がこれまでに持っているものは非常に基本的なものであり、おそらく機能しません。私はこれを実装しませんが、どんなポインタでもいただければ幸いです。
pプロセッサ、長さtのテキスト、長さLのパターン、および使用されるLプロセッサの上限の場合:
java - 厳密な文書類似性のためのテキスト類似性関数
私は、UTF-8 でエンコードされた 2 つのドキュメントの類似性について最終的な判断を下さなければならない Java ソフトウェアを作成しています。
2 つのドキュメントは、日付、場所、作成者などの多くの共通点があるため、同じか、互いにわずかに異なる可能性が非常に高くなりますが、それらのテキストが本当にそうであるかどうかを決定します。
2 つのドキュメントのテキストは非常に似ているか、まったく似ていないことが予想されるため、類似性のしきい値をかなり厳密に設定できます。たとえば、2 つのドキュメントは、90% の単語が共通している場合にのみ類似していると言えますが、短いテキストでも長いテキストでも同じように機能する、より堅牢なものが必要です。
要約すると、私は持っています:
- 非常に似ているか、まったく似ていない 2 つのドキュメント。
- 2 つのドキュメントが類似している可能性が高い
- ドキュメントは長いもの (いくつかの段落) と短いもの (数文) の両方があります。
文字列マッチング関数の大きな配列を持つsimmetricsを試しましたが、使用可能なアルゴリズムについての提案に最も興味があります。
私が持っている可能性のある候補は次のとおりです。
- レーベンシュタイン: その出力は短いテキストの場合により重要です
- 重複する係数: たぶん、しかし、異なる長さのドキュメントをうまく区別できますか?
また、2 つのテキストがまったく同じである場合にのみ類似していると見なすのはうまくいきません。なぜなら、いくつかの単語だけが異なる文書が類似性テストに合格することを望んでいるためです。
python - Pythonの文字列の最初の非空白文字の最小インデックスを返す
Pythonでこれを行う最短の方法は何ですか?
インデックス=3を返す必要があります
python - 文字列の任意の場所で1つの不一致を許容する文字列を検索します
私は長さ25のDNA配列を扱っています(以下の例を参照)。私は230,000のリストを持っており、ゲノム全体(toxoplasma gondii寄生虫)の各配列を探す必要があります。ゲノムの大きさはわかりませんが、23万配列よりはるかに長いです。
たとえば、(AGCCTCCCATGATTGAACAGATCAT
)のように、25文字のシーケンスをそれぞれ探す必要があります。
ゲノムは連続した文字列としてフォーマットされます。つまり、(CATGGGAGGCTTGCGGAGCCTGAGGGCGGAGCCTGAGGTGGGAGGCTTGCGGAGTGCGGAGCCTGAGCCTGAGGGCGGAGCCTGAGGTGGGAGGCTT....
)
どこに何回あるかは気にせず、見つけられるかどうかだけです。
これは簡単だと思います-
しかし、私はまた、任意の場所で間違っている(不一致)と定義されている厳密な一致を見つけて、その場所を1つの場所だけに記録し、その場所を順番に記録します。これをどのように行うのかわかりません。私が考えることができる唯一のことは、ワイルドカードを使用し、各位置でワイルドカードを使用して検索を実行することです。つまり、25回検索します。
例えば、
位置13での不一致との密接な一致。
スピードは3回しかないので大した問題ではありませんが、速ければいいのですが。
これを行うプログラムがあります-一致と部分一致を検索します-しかし、私はこれらのアプリケーションでは検出できないタイプの部分一致を探しています。
これはperlの同様の投稿ですが、シーケンスを比較しているだけで、連続した文字列を検索していません。
awk - Awk 内から stderr を読み取る
SSH デバッグ情報を他の入力とは分けて (ログに記録して) 保持したい。ただし、単純に stderr をログ ファイルにリダイレクトすると、SSH からの出力とホスト マシン上のリモート プロセスからの出力を組み合わせる危険があります ( stderr に何かが送信される可能性があります)。
したがって、「debug1」に一致する行のみを除外したいと思います。
ここまでは問題ありませんが、ssh のデバッグ出力は stderr に出力されます。そう...
また失敗!stdout と stderr を混在させたくありません。悪い!
私のような子供は何をしますか?私は名前付きパイプまたはそのような野生のルートに行こうとしていましたが、実際に知る必要があるのは、awk を stderr のみからのパターンに一致させる方法だけです。
c# - string1 のどの部分文字列が string2 と一致するか
2本の弦があります。
String str1="Order Number Order Time Trade Number";
String str2="Order Tm";
次に、 str2が str1 のどの部分文字列と一致するかを知りたいです。
「Order Tm」は「Order Time」にも一致するため、正規表現を使用しています。一致が発生したかどうかをブール値で示します。
その後、str1 のようstr2="Order Tm"
に返される必要があります。Order Timeは、一致が発生した部分文字列です。
php - ワイルドカードを使用してハッシュを選択するphp
ハッシュマップがあるとしましょう。
オートコンプリート機能を実行しようとしています。ユーザーが「fo」と入力すると、ajaxを介して$hashから3つのキーを取得したいと思います。ユーザーが「for」と入力した場合、キーfortとforkのみを取得したいと思います。これは可能ですか?
私が考えていたのは、ブルートフォース検索の代わりに、バイナリ検索を使用してキーを「f」で分離することでした。次に、ユーザーがクエリを入力するときにインデックスを削除し続けます。これに対するより効率的な解決策はありますか?
編集:ワイルドカードに関して、私が疑問に思っていたのは、$ hash ["f *"]を実行する方法がある場合、「f」で始まるすべてのインデックスを返すことです。
javascript - より多くの入力が与えられた場合に、値が正規表現と一致する可能性があるかどうかを判断する
現在、入力を正規表現に一致させる JavaScript でアプリケーションを作成していますが、文字列を正規表現の一部に一致させる方法も見つける必要があります。
例えば:
potentially
ここで、変数の値が式と正確に一致しないことをどうにかして判断する方法を見つける必要がありますが、/^ggg$/
より多くの入力があれば、可能性があります!
したがって、たとえばこの場合、potentially
変数は ですがg
、さらに 2 つg
追加すると、正規表現に一致します。/^ggg$/
しかし、 の場合、何文字追加しても式とinvalid
一致することはありません。/^ggg$/
では、文字列が特定の正規表現に一致する可能性があるかどうかを判断するにはどうすればよいでしょうか?