Python中带有3个组的正则表达式模式
我试图理解Python中的正则表达式。我正在尝试这种模式:Python中带有3个组的正则表达式模式,python,regex,Python,Regex,我试图理解Python中的正则表达式。我正在尝试这种模式: string = re.sub(r'(\".+?\")(: )', '\"here!\": ', string) 对于此类字符串: { some text "data": { "first": "xyz" some text} 我原以为这会取代“first”:“xyz”,但令我惊讶的是,被取代的字符串是:“data”:{“first”:“xyz”。这是为什么?我不知道它为什么会这样工作。您的正则表达式匹配输入字符串的第一部分,该部分
string = re.sub(r'(\".+?\")(: )', '\"here!\": ', string)
对于此类字符串:
{ some text "data": { "first": "xyz" some text}
我原以为这会取代“first”:“xyz”,但令我惊讶的是,被取代的字符串是:“data”:{“first”:“xyz”。这是为什么?我不知道它为什么会这样工作。您的正则表达式匹配输入字符串的第一部分,该部分用双引号括起来,后跟冒号,因此它在
“first”
之前点击“data”
我会选择一个正则表达式:
'{\s*("\w+"):'
这将匹配左大括号,后跟一些可选空格,然后选择双引号中的字母数字文本,后跟冒号
此外,您不需要转义双引号,因为您使用单引号作为正则表达式的分隔符。这看起来像某种类型的
JSON
,为什么不首先使用解析器?@Jan这是因为我正在编写自定义解析器tbh