Python 用于短语中多个换行符的正则表达式

Python 用于短语中多个换行符的正则表达式,python,regex,Python,Regex,我正在用Python学习正则表达式,我想准备一个RE来匹配和收集以下输入中的句子: 食物:蛋糕:由面粉、糖和其他配料制成的烘焙甜食 电子学:计算机:执行计算机编程操作的机器。 计算机主要由CPU、显示器、键盘和鼠标组成 汽车:汽车:汽车是一种用于运输的四轮机动车 我的预期输出应该给我类别、项目和该项目的描述。因此,对于第一项,蛋糕,RE应将“食品”、“蛋糕”、“由面粉、糖和其他成分制成的烘焙甜食”归类 我当前的RE如下所示: [0-9]+\s*.\s*(\w*)\s*:\s*(\w*)\s*:\

我正在用Python学习正则表达式,我想准备一个RE来匹配和收集以下输入中的句子:

  • 食物:蛋糕:由面粉、糖和其他配料制成的烘焙甜食
  • 电子学:计算机:执行计算机编程操作的机器。
    计算机主要由CPU、显示器、键盘和鼠标组成
  • 汽车:汽车:汽车是一种用于运输的四轮机动车
  • 我的预期输出应该给我类别、项目和该项目的描述。因此,对于第一项,蛋糕,RE应将“食品”、“蛋糕”、“由面粉、糖和其他成分制成的烘焙甜食”归类

    我当前的RE如下所示:

    [0-9]+\s*.\s*(\w*)\s*:\s*(\w*)\s*:\s*(.*)
    
    这似乎适用于描述中没有换行符的项目。如果它有一个换行符,即示例中的计算机,则RE仅将其描述与换行符匹配。RE丢弃了该描述中的第二句话


    请帮助我理解我在这里遗漏了什么。

    如果类别、项目和描述用双换行符分隔,您可以使用此示例对其进行解析():

    印刷品:

     Food 
     Cake 
     Baked sweet food made from flour, sugar and other ingredients.
    --------------------------------------------------------------------------------
     Electronics 
     Computer 
     A machine to carry out a computer programming operation.
       Computers mainly consists of a CPU, monitor, keyboard and a mouse.
    --------------------------------------------------------------------------------
     Automobile 
     Car 
     Car is a four wheeled motor vehicle used for transportation.
    --------------------------------------------------------------------------------
    

    这可能是一种基本的方法,但它适用于您提供的示例输入:

    [0-9]+\s*\s*(\w*)\s*:\s*(\w*)\s*:\s*((?:.[\n\r]?)+?)(?=$\d\s*\)

    基本上,我们在描述中尽可能多地使用文本(包括换行符),直到到达文件的末尾,或者另一个数字索引


    您可以看到实现

    每个类别都可以有多个项目吗?@RoboMop,不,类别不需要有多个项目。但是,一个项目可以有多个句子作为描述。阅读
    的意思。@Tomalak我很确定这不是问题所在。如果您查看了示例输入,您会发现问题在于尽可能匹配某个项目的描述,但不包括下一个类别。我必须做的一个细微更改是在数字的
    正向前瞻
    中添加
    *
    。因此,我的工作规则是:
    [0-9]+\s*\s*(\w*)\s*:\s*(\w*)\s*:\s*((?:.[\n\r]?)+?)(?=$\d*\s*\)
     Food 
     Cake 
     Baked sweet food made from flour, sugar and other ingredients.
    --------------------------------------------------------------------------------
     Electronics 
     Computer 
     A machine to carry out a computer programming operation.
       Computers mainly consists of a CPU, monitor, keyboard and a mouse.
    --------------------------------------------------------------------------------
     Automobile 
     Car 
     Car is a four wheeled motor vehicle used for transportation.
    --------------------------------------------------------------------------------