在 Python 3 中使用正则表达式在 2 个句子之间提取多行数据

Extract Multiline Data between 2 sentences using Regex in Python 3

我有这个数据

Date = 10

data = ["""Number of Days are 4 days : 

john: 12

jade: 452

kent: 3542

Number of Days are 10 days : 

john: 34

jade: 765

kent: 9473"""]

我需要 john 、jade 和 kent 的 10 天数据,而不是保存在变量 'Date = 10' 中的 4 天数据。谁能建议 python 3.X 中的任何正则表达式公式来解决这个问题?

用新行做这个有点复杂,用任何字符拆分会容易得多,但这就是我得到的:

import re
Date = "10"
regex = r"(?<=Number of Days are %s days : \n\n)(.+\n{0,2})+?((?=Number of Days)|(?=$))" % (Date) 
test_str = ("""Number of Days are 4 days : 

john: 12

jade: 452

kent: 3542

Number of Days are 10 days : 

john: 34

jade: 765

kent: 9473

Number of Days are 11 days : 

john: 34

jade: 765

kent: 9473""")

matches = re.search(regex, test_str)

if matches:
    print (matches.group())

我的正则表达式如下:

r"(?<=Number of Days are %s days : \n\n)(.+\n{0,2})+?((?=Number of Days)|(?=$))"

第一部分:

(?<=Number of Days are %s days : \n\n)

这看起来是否有您的搜索字符串 Number of Days are %s days %s 正在引用您的变量 Date

第二部分:

(.+\n{0,2})+

查找末尾有 0 或 2 个新行的任何字符。

第三部分:

?((?=Number of Days)|(?=$))

这会查看是否有任何 Number of Days 或者它是字符串的末尾,如果是,则阻止第二部分获得更多匹配项。