Python 仅提取两个正则表达式模式之间的字符串部分

Python 仅提取两个正则表达式模式之间的字符串部分,python,regex,string,python-2.7,Python,Regex,String,Python 2.7,我已经看过了,虽然答案解决了OP的问题,但实际上并没有回答这个问题。当只知道相关部分前后的模式时,如何提取给定字符串的部分 例如,如果我有这样一个字符串: “您好,这是一个字符串,其中只有值={000.10,2.00,5.0,10.0}是重要的 给定这个字符串,我需要特别提取000.10,2.00,5.0,10.0。我不知道有多少个数字或它们的格式,甚至它们之间有多少空格,但我知道值={和}将在开始和结束处 使用正则表达式,我可以通过执行以下操作找到值={000.10,2.00,5.0,10.0

我已经看过了,虽然答案解决了OP的问题,但实际上并没有回答这个问题。当只知道相关部分前后的模式时,如何提取给定字符串的部分

例如,如果我有这样一个字符串:

“您好,这是一个字符串,其中只有值={000.10,2.00,5.0,10.0}是重要的

给定这个字符串,我需要特别提取
000.10,2.00,5.0,10.0
。我不知道有多少个数字或它们的格式,甚至它们之间有多少空格,但我知道
值={
}
将在开始和结束处

使用正则表达式,我可以通过执行以下操作找到
值={000.10,2.00,5.0,10.0}

import re

string = "Hi, this is a string where only values = { 000.10, 2.00, 5.0, 10.0 } are important"

match = re.search(r'values\s=\s\{.+}\s', string)
if match:
    print match.group()
else:
    print "Could not find a match..."
哪些产出:

value={000.10,2.00,5.0,10.0}

那么,如何只获取模式
r'values\s=\s\{
\}\s
之间的文本呢

我知道我可以用空字符串替换开始和结束模式,如下所示:

match.group().replace('value={','').replace('}','')

但是有没有一种方法可以将我只想要正则表达式本身中两个模式之间的结果这一事实结合起来呢


希望这个问题有意义。任何答案都将不胜感激。

您只需将想要的文本分组,如下所示

re.search(r'values\s=\s{\s*(.+)\s*}\s', string)
print match.group(1)
请注意
{
}
中的参数。这里我们使用
\s*
来匹配实际文本周围要匹配的0个或多个空格字符。由于捕获组不包括
\s*
,因此空格将不匹配。然后,您将得到这样的分组值

re.search(r'values\s=\s{\s*(.+)\s*}\s', string)
print match.group(1)

当您执行
match.group()
match.group(0)时
它将给出整个匹配的字符串。因为我们只需要组匹配的文本,所以我们指定了组的编号。您可以在文档中阅读更多关于它的信息。

根据OP的问题,您需要大括号之间的捕获组=)+1:非常简单的解释。对于OP,括号也可以放在esc中尖括号,即
\{
,类似于您的原始字符串,只获取括号内的数字。啊,我明白了。这不仅澄清了我的问题,而且澄清了匹配对象中的组的概念。我猜在用大括号标记的模式中可能有多个组,并且可以通过group方法获取其中任何一个。很好!您最好允许f或者to regexp之间的空字符串。您使用了
+
,这两个字符串可以是一个接一个的。以防空字符串是有效的结果。@LuisColora是否要我将其更改为
*