私はPythonには新しく、2つの正確なパターンの間の部分文字列の長いテキスト文字列を解析しようとしています。問題は、終了パターンの最初の出現で停止するようにpythonに指示することにあります。また、サブ文字列のすべてのインスタンスを収集して、後で使用する配列ストレージに配置する必要があります。私は簡単にするために、Nikolaus Gradwohlの(再)モジュール例hereを利用しようとしています。以下は、私がしたことの例です。キャプチャした後、すぐに終点(」、): Pythonで複数の部分文字列を抽出するときに停止位置を宣言する
import re
string='valuepattern1":"capture",abcdpattern1":"capture2",defg'
result = re.search('pattern1":"(.*)",', string)
print result.group(1)
Output: capture",abcdpattern1":"capture2"
は、ここで私は(「」パターン1)のポイントを開始セットの間の文字列で見つかったキャプチャのすべてのインスタンス(キャプチャとキャプチャ2)を収集しようとしています。収集された各インスタンスは、キャプチャが設定長さを有していない
print result
Output: [capture,capture2]
留意されたい。以下に示すように、アレイに追加する必要があり、文字列全体のすべての変化、しかし、開始および終了パターンは、文字列を介して一貫性を維持します。
アドバンテージありがとうございますこの問題の助けを借りて
この入力はJSONか、より大きなJSON文字列の一部ですか? PythonにはJSONパーサーがあります。たとえそれがJSONでなくても、正規表現解析は非常に壊れやすいかもしれません。 – user2357112
@ user2357112という情報をありがとうございます。文字列は圧縮されたJSONファイルです。私は以前の学生がbashで行った古いスクリプトをPythonのものに変換しようとしていました。スクリプトの大部分には正規表現のコマンドが含まれていますが、これは部分的なものではなく、この場合は実用的ではないので好きでもありません。 –