私は、pip install
コマンドを使用してインストールされた Python パッケージの名前と場所を抽出する必要があるプロジェクトに取り組んでいます。
Web ページには、複数行のテキストと bash コマンドを含むcode
要素が含まれています。このテキストを解析して、テキスト内のパッケージとその場所を検索できる JS コードを作成したいと考えています。
たとえば、テキストが次の場合:
リーリー
これと同様の結果を取得したい:
リーリー
この機能をJavaScriptで実装するにはどうすればよいですか?
この回答で説明したコードをご覧ください。
これは、正規表現に基づいた別の同様の解決策です:
リーリーこれはオプションの解決策です。正規表現の代わりにループを使用してみてください:
アイデアは、テキスト
pip install
を含む行を見つけることです。これらの行が、私たちが関心のある行です。次に、コマンドを単語に分割し、コマンドのパッケージ部分に到達するまでループします。まず、パッケージの正規表現を定義します。パッケージは
のようなものであることに注意してください。 リーリーpip install 'stevedore>=1.3.0,:
NOTE名前付きグループ、
package_part
は「バージョン付きパッケージ」文字列の識別に使用され、package_name
は抽出に使用されます。パッケージ名。パラメータについて
コマンドライン引数には、optionsとflagsの 2 種類があります。
options の問題は、次の単語がパッケージ名ではなく、options値であることを理解する必要があることです。
そこで、最初に
リーリーpip install
コマンドのすべてのオプションをリストしました:次に、引数を見つけたときに何をするかを決定するために後で使用する関数を作成しました。 リーリー
この関数は、認識されたパラメータとコマンドの残りの部分を単語に分割して受け取ります。 (ここで「インデックス カウンター」が表示されます。各発見の位置も見つける必要があるため、元のテキスト内の現在の位置を追跡する必要があります)。 関数の最後の数行では、--option=something
と
--option somethingの両方のケースを処理していることがわかります。
パーサー ここで、メイン パーサーは生のテキストを行に分割し、次に単語に分割します。 すべての操作では、テキスト内のどこにいるかを追跡するために
グローバル インデックスを更新する必要があります。このインデックスは、間違った部分文字列に陥ることなくテキスト内を検索して見つけるのに役立ちます。を使用します。 IndexOf(str, counterIndex)
:
リーリー