私はPOST本体の内容を扱っており、各キーの値を抽出したいと思っています。私が解析しようとしているデータは次のとおりです。正規表現でエスケープ文字を避ける
s = b'----------------------------941135026682458398564529\r\nContent-Disposition: form-data; name="username"\r\n\r\nmyusername\r\n----------------------------941135026682458398564529\r\nContent-Disposition: form-data; name="password"\r\n\r\nmypassword\r\n----------------------------941135026682458398564529\r\nContent-Disposition: form-data; name="keyword"\r\n\r\nmykeyword\r\n----------------------------941135026682458398564529--\r\n'
私は何を取得したいことは、Pythonのre
モジュールを使用して値myusername
、mypassword
とmykeyword
です。
pattern = r'\bname=\"{}\"\\r\\n\\r\\n([^-]+)\\r'
の各キーに合わせて、必要に応じて、その後に変更されています:このような理由から、私はこのパターンを生成
username_pattern = re.compile(pattern.format("username"))
password_pattern = re.compile(pattern.format("password"))
keyword_pattern = re.compile(pattern.format("keyword"))
私が直面してる問題は、すべてのバックスラッシュをエスケープなっているということです、私はpattern
、代わりに以前に定義された値を保つことを定義するとき、私はを取得し、すべてのバックスラッシュはをエスケープ:
'\\bname=\\"{}\\"\\\\r\\\\n\\\\r\\\\n([^-]+)\\\\r'
次に、<any of the compiled patterns>.search(s)
メソッドを実行すると一致するものはありません。私はパターンhereをテストし、それぞれのキーワードで期待どおりに動作します。このバックスラッシュがエスケープするのを避けるにはどうすればよいですか?そして、私が求めていることが必要ではない場合、何が間違っているのですか?ありがとうございました。
'r '\ bname =" {} "\ r \ n \ r \ n([^ - ] +)\ r"バックスラッシュを過度にしないでください。あなたは既に生のものを使用しています。 –
@ Jean-FrançoisFabreそれはそれでした。それを指摘してくれてありがとう。あなたのコメントを回答として追加してください。 – tulians