Python 如何在regex语句中获得中间值?

Python 如何在regex语句中获得中间值?,python,regex,Python,Regex,给定一个字符串,我想通过查找前缀(常数)和后缀(可能存在也可能不存在)来获取id。以下是可能需要处理的案件: item: item_id { item_data } 在每一种情况下,我都会试图去掉“item_id”。以下是我目前正在尝试的方法: 使用项:\s*(.*)作为regex语句,然后手动删除所有“{”和“}”。对于我上面写的第一个示例,这失败了,因为它在搜索语句中保留了item_数据 使用项:\s*(.*){作为regex语句,然后手动删除括号。对于第三个示例,如果没有表示语句结束的开

给定一个字符串,我想通过查找前缀(常数)和后缀(可能存在也可能不存在)来获取id。以下是可能需要处理的案件:

item: item_id { item_data }
在每一种情况下,我都会试图去掉“item_id”。以下是我目前正在尝试的方法:

  • 使用
    项:\s*(.*)
    作为regex语句,然后手动删除所有“{”和“}”。对于我上面写的第一个示例,这失败了,因为它在搜索语句中保留了item_数据
  • 使用
    项:\s*(.*){
    作为regex语句,然后手动删除括号。对于第三个示例,如果没有表示语句结束的开始括号,则此操作失败
  • 我应该在这里做什么?我似乎无法创建一个可以处理所有三种情况而不破坏其他内容的regex语句。我还尝试使用
    item:\s*(*){???
    使语句不贪婪,但这根本不起作用。

    item:\s*(\w+

    说明:
    \w
    将只匹配
    A-Z
    A-Z
    0-9
    (下划线)。否则,您可以使用
    [^{\s]
    (空格和大括号除外)代替
    \w
    。如下:
    项:\s*([^{\s]+)

    也考虑将<代码> \W/COD>改为<代码> \d>代码>或> <代码> []/COD> < /P>


    您可以在这里检查结果:

    应该在示例数据中吗?我的错误-我写了错误的东西。编辑以更好地适合我的示例
    项:\s*(.*)\s*{
    ?顺便说一句,既然您已将其标记为python,那么可能会包含您用于执行此正则表达式并使示例成为python字符串的python代码?
    item: item_id { 
        item_data
    }
    
    item: item_id
    { 
        item_data
    }