Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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 如何在正则表达式中找到模式?_Python_Regex - Fatal编程技术网

Python 如何在正则表达式中找到模式?

Python 如何在正则表达式中找到模式?,python,regex,Python,Regex,我想找到一个模式,并用另一个模式替换它 假设我有: "Name":"hello" 你想这样做吗 Name= "hello" 使用python正则表达式 字符串可以是双引号内的任何内容,因此我需要找到模式“”:“”并将其替换为“”此表达式 ^"\s*([^"]+?)\s*"\s*:\s*"?([^"]+)"?$ 有两个捕获组: ([^"]+?) 收集我们想要的数据。然后,我们将简单地re.sub 如果您可能感兴趣的话,

我想找到一个模式,并用另一个模式替换它 假设我有:

"Name":"hello"
你想这样做吗

Name= "hello"
使用python正则表达式 字符串可以是双引号内的任何内容,因此我需要找到模式“”:“”并将其替换为“”此表达式

^"\s*([^"]+?)\s*"\s*:\s*"?([^"]+)"?$
有两个捕获组:

([^"]+?) 
收集我们想要的数据。然后,我们将简单地
re.sub

如果您可能感兴趣的话,这里将对表达式进行解释

试验
为什么不使用这个正则表达式:

import re
s = '"Name":"hello"'
print(re.sub('"(.*)":"(.*)"', '\\1= \"\\2\"', s))
输出:

Name= "hello"
Name= "hello", Name2= "hello2"
解释

对于包含多个此类字符串的字符串,您需要向其中添加一些python代码:

import re
s = '"Name":"hello", "Name2":"hello2"'
print(re.sub('"(.*?)":"(.*?)"', '\\1= \"\\2\"', s))
输出:

Name= "hello"
Name= "hello", Name2= "hello2"

使用纯Python,这非常简单:


用单引号括起来的正则表达式更具可读性:
regex=r''\s*([^“]+)\s*“\s*:\s*”([^“]+)\s*”@
([^“]+)
在到达
\s*
之前会占用后面的空格。可能
([^“]+?)
。最后,您不需要关心右边的空格,因为如果去掉它们,您会更改带引号的字符串。如果我想使用“Name”:[]-->Name=[]([]-->[]),或者它可能是一个值“Name”:123-->Name=123为什么
Name=“hello”
而不是
Name=“hello”
?换句话说,为什么选择在右引号中去掉空格?带引号的字符串不应该保持不变吗?不,我的意思是,如果右侧有数字或括号,会怎么样?最后的挑剔(对不起)。您的前两个带引号的字符串必须是单引号。如果将模式隔离,这很好,但如果它是更大文档的一部分,则不需要太多。如何使用regex…bcoz仅当获得模式“”时,我需要替换它:“”