关于正则表达式:Python正则表达式 – 如何捕获未捕获的其余文本

Python regular expressions - how to capture the rest of text which is uncaptured

亲爱的社区成员!

我正在努力解决regex问题。目的是将文本拆分为单独的部分,并使用关键字(consetetur tempor incidedunt proident consequat)作为分隔符,并将关键字添加到捕获的文本部分。再次开始捕获新组,直到发现另一个关键字。不幸的是,我一直在寻找捕获最后一位文本的解决方案,它没有关键字,必须添加到最后一个捕获组或新组的末尾。使用regex甚至可以解决这个问题吗?

请注意底部的链接

正则表达式:(.*?)(连续性节奏不连贯前瞻性后果)

文字:Lorem ipsum dolor sit amet,Concettetur adipiscing elit,sed do eiusmod tempor inccided ut labore et dolore magna aliqua.如果是最小的鹿肉,那么诺斯特鲁德的实验室就不需要支付任何费用。在巴黎的富家大教堂里,有一只可爱的海豚。除了西方国家以外,丘比特人没有胆怯,他们在工作中表现得很好。

预期结果:

比赛1

  • 洛雷姆·伊普桑·多洛·西特·阿美,

  • 圣餐仪式

  • 比赛2

  • 爱的精英,塞德·多·埃乌斯莫德

  • 节奏刺激

  • 比赛3

  • 拉伯和多洛尔·马格纳·阿利卡。在一个普通的地方

  • 结果

  • 比赛4

  • . 在巴黎的富家大教堂里,有一只可爱的海豚。例外情况

  • 箴言

  • 这是我的劳动。

  • 以下是我迄今为止所掌握的支持信息:

    • 上述问题截图

    • 链接到所有字段都已填充的regex测试仪

    感谢您的帮助!


    您可以使用

    1
    (.*?)(consectetur|tempor incididunt|proident|consequat|\Z)

    \Z与python中文本的末尾匹配。请参阅regex演示。

    因此,模式现在匹配:

    • (.*?)—第1组:在第一次出现之前,尽可能少的任何0+字符
    • (consectetur|tempor incididunt|proident|consequat|\Z)—任何备选方案:consecteturtemporincididuntproidentconsequat或串尾。

    如果字符串可以换行,则在编译regex时使用re.DOTALL标志:

    1
    rx = re.compile(r'(.*?)(consectetur|tempor incididunt|proident|consequat|\Z)', re.DOTALL)