怎么用正则表达式匹配段落啊

比如说文本是这样的

第一回
红红火火恍恍惚惚
红红火火恍恍惚惚

第二回
噜啦噜啦嘞绿绿绿
噜啦噜啦嘞绿绿绿

第三回
咿咿呀呀呀呀晕呀晕
咿咿呀呀呀呀晕呀晕

想给他弄成['第一回\n红红火火恍恍惚惚\n红红火火恍恍惚惚\n','第二回\n噜啦噜啦嘞绿绿绿\n噜啦噜啦嘞绿绿绿\n','第三回\n咿咿呀呀呀呀晕呀晕\n咿咿呀呀呀呀晕呀晕\n']列表的形式,用正则表达式怎么弄?

python

a = '''第一回
红红火火恍恍惚惚
红红火火恍恍惚惚
 
第二回
噜啦噜啦嘞绿绿绿
噜啦噜啦嘞绿绿绿
 
第三回
咿咿呀呀呀呀晕呀晕
咿咿呀呀呀呀晕呀晕
'''
print(a)
b = a.split(' \n')
print(b)

 

r"第一回([\s\S]*?)呀晕"

print(re.findall('[\u4e00-\u9fa5\n]+', text))

直接的正则做不到。可以自己定义个函数实现:

def split_text(s):
    lines = s.strip().split('\n')
    lst = []
    t = ''
    for idx, line in enumerate(lines, 1):
        if not line:
            lst.append(t.strip())
            t = ''
        elif idx == len(lines):
            t += line
            lst.append(t)
        else:
            t += line + '\n'
    return lst

以上函数只适用每回的分隔只有一个空行而不是多个连续空行。