我试图理解Python中的正则表达式。我试图尝试这种模式:
string = re.sub(r'(\".+?\")(: )', '\"here!\": ', string)
这种字符串:
{ some text "data": { "first": "xyz" some text}
我希望这会取代"首先":" xyz" 但令我惊讶的是,被替换的字符串是:"数据":{"第一":" xyz" 。这是为什么?我不知道它为什么会以这种方式运作。
答案 0 :(得分:1)
您的正则表达式匹配输入字符串的第一部分,该字符串由双引号括起,后跟冒号,因此它会在"data"
之前点击"first"
。
我会去正则表达式:
'{\s*("\w+"):'
这将匹配左括号后面的一个可选空格,然后选择双引号后跟冒号的字母数字文本。
另外,当您使用单引号作为正则表达式的分隔符时,您不需要转义双引号。