Regex 收集重复的2组模式

Regex 收集重复的2组模式,regex,pcre,Regex,Pcre,我正在寻找一个正则表达式,将从以下返回 赫胥黎的定律是有趣的。还有一些有趣的事情。 达拉斯的法律他的事情很无聊。 一些东西的无效法则 作为两行文字,其中已确定两组: 第一组以“法律”开头,以第一个大写字母结尾 第二组,开始于之后,结束于下一组“法律” 遇到模式 我的目标是通过使用以下捕获组将标题与核心文本分离,从而对其进行重新表述: The law of Huxley Something interesting. Some other interesting thing. The law

我正在寻找一个正则表达式,将从以下返回

赫胥黎的定律是有趣的。还有一些有趣的事情。 达拉斯的法律他的事情很无聊。 一些东西的无效法则

作为两行文字,其中已确定两组:

  • 第一组以“法律”开头,以第一个大写字母结尾
  • 第二组,开始于之后,结束于下一组“法律” 遇到模式
  • 我的目标是通过使用以下捕获组将标题与核心文本分离,从而对其进行重新表述:

    The law of Huxley 
    Something interesting. Some other interesting thing. 
    
    The law of Dallas 
    This thing is boring.
    
    The law of void
    Some stuff.
    
    我试过了

    ((The law [\w\s]+)([A-Z].+))+
    
    无效

    您可以使用

    (The law\s+\w+\s\P{Lu}*)(\p{Lu}.*?)(?=The law|$)
    

    详情:

    • (law\s+\w+\s\P{Lu}*)
      -第1组:
      该law
      文本,然后是一个或多个空格、一个或多个单词字符、一个空格,然后是除大写字母以外的任何零个或多个字符
    • (\p{Lu}.*)
      -第2组:大写字母,然后是除换行符以外的任何零个或多个字符,尽可能少,直到后续子模式首次出现为止
    • (?=law |$)
      -一种正向前瞻,需要将
      law
      或字符串结尾紧靠当前位置的右侧

    您使用的是什么编程语言或正则表达式风格?您的具体要求是什么?匹配并捕获所有从
    法则
    到下一个单词,然后直到下一个大写字母开始的下一个捕获,该捕获一直到下一个
    法则
    或字符串结尾
    (law\s+\w+\s\P{Lu}*)(\P{Lu}.*?(=law}$)
    ()还是在第一个大写单词之后?你做得很好@WiktorStribiżew;我实际上是在寻找使用捕获组来分离一些混合了核心文本的标题。我错过了它发挥作用的积极前瞻部分。谢谢你抽出时间。请毫不犹豫地发布一个回复,这样我就可以把它标记为一个好的答案