python - 在积极的后视中使用积极的前瞻?
问题描述
我想在积极的后视中使用积极的前瞻,但它似乎不起作用。
我尝试了以下方法:(?<=Chapter 1(?=Introduction))(.*)(?=Chapter 2)
全文:
Chapter 1
Introduction
Lorem Ipsum is simply dummy text
Chapter 2
Introduction
Lorem Ipsum is simply dummy text```
解决方案
您可以匹配第 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
查看另一个正则表达式演示
推荐阅读
- angular - 如何在无限行模型中设置初始起始页?
- java - 以编程方式在 Maven 中心获取捆绑包
- mysql - 如何获取我以前知道的 2 行中常见的相同聊天 ID
- javascript - 具有多个孩子的基准继承
- matlab - 通过平均将点云转换为体素
- typo3 - 在 Typo3 版本 9.5 中一次添加多个页面
- vb.net - COM Visible Assembly - 无法通过其公开的接口方法访问的对象方法
- laravel - 会话未在 laravel 中持续存在
- stata - 使用oprobit时导出组合表
- azure-devops - 如何比较两个 Azure(发布)管道?