2017-11-04 8 views
0

私は正規表現をPythonで理解しようとしています。私はこのパターンをしようとしようとしています:文字列のこの種のPythonで3つのグループを持つ正規表現パターン

string = re.sub(r'(\".+?\")(:)', '\"here!\": ', string) 

{ some text "data": { "first": "xyz" some text} 

私は、これは「最初の」を置き換えるために期待:「XYZ」が、私の驚きに、文字列次のように置き換えられます。"data":{"first": "xyz"。何故ですか?私はなぜそれがこのように働いているのか分かりません。

+0

これは何らかのJSONのように見えますが、最初はパーサを使用しないのはなぜですか? – Jan

+0

@Janそれは私のカスタムパーサーtbhを書いているからです – soommy12

答えて

1

正規表現は、二重引用符で囲まれた入力文字列の最初の部分と一致し、コロンが続きますので、"first"の前に"data"とヒットします。

私は正規表現のために行くだろう:これはコロン二重引用符で英数字のテキストを選択し、その後、いくつかのオプションの空白が続く開くブレースと一致します

'{\s*("\w+"):' 

また、一重引用符を正規表現の区切り文字として使用しているので、二重引用符をエスケープする必要はありません。

関連する問題