Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中带有3个组的正则表达式模式_Python_Regex - Fatal编程技术网

Python中带有3个组的正则表达式模式

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”。这是为什么?我不知道它为什么会这样工作。您的正则表达式匹配输入字符串的第一部分,该部分

我试图理解Python中的正则表达式。我正在尝试这种模式:

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