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仅当获得模式“”时,我需要替换它:“”