首页 > 解决方案 > 在积极的后视中使用积极的前瞻?

问题描述

我想在积极的后视中使用积极的前瞻,但它似乎不起作用。

我尝试了以下方法:(?<=Chapter 1(?=Introduction))(.*)(?=Chapter 2)

全文:

Chapter 1
Introduction

Lorem Ipsum is simply dummy text

Chapter 2
Introduction

Lorem Ipsum is simply dummy text```

标签: pythonregex

解决方案


您可以匹配第 1 章直到引言,而不是向后看。然后使用具有重复模式的捕获组来检查该行是否不是从第 2 章开始的。

^Chapter 1[\r\n]+Introduction[\r\n]+((?:(?!Chapter 2).*(?:\r?\n|$))*)

在零件

  • ^字符串的开始
  • Chapter 1[\r\n]+匹配第 1 章和第 1 章以上的换行符 Introduction[\r\n]+ Match Introduction and 1+ newlines
  • (捕获组 1
    • (?:非捕获组
      • (?!Chapter 2).*负前瞻,检查不是从第 2 章开始
      • (?:\r?\n|$)匹配换行符或断言字符串的结尾
    • )*关闭非捕获组并重复 0+ 次
  • )关闭捕获组 1

正则表达式演示

如果您想要所有章节的匹配项,您可以将数字 1 更改为\d+,将数字 2更改为\d

查看另一个正则表达式演示


推荐阅读