qq_39321513
静静_jingjing
2021-03-19 11:10
采纳率: 33.3%
浏览 106

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

比如说文本是这样的

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

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

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

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

python

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • ProfSnail
    ProfSnail 2021-03-19 13:01
    已采纳
    a = '''第一回
    红红火火恍恍惚惚
    红红火火恍恍惚惚
     
    第二回
    噜啦噜啦嘞绿绿绿
    噜啦噜啦嘞绿绿绿
     
    第三回
    咿咿呀呀呀呀晕呀晕
    咿咿呀呀呀呀晕呀晕
    '''
    print(a)
    b = a.split(' \n')
    print(b)

    点赞 1 评论
  • X_Falling
    X_Falling 2021-03-19 11:29

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

    点赞 评论
  • funny123
    coagenth 2021-03-19 11:38

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

    点赞 评论
  • secret5
    liqiang94 2021-03-19 11:54

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

    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

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

    点赞 评论

相关推荐