检索特定字符之间的最后一组文字

问题描述 投票:1回答:1

我有一个文本文件,其数据的打印方式是这样的

---
1A
1B
1C
---
---
2A
2B
2C
---
---
3A
3B
3C
.
.
3n
---
NA
.
.
Nn
---

本质上是围绕着------到------的文字行。

我想提取最后出现的---到---之间的内容,到目前为止,我已经用regex把范围缩小到了---到---之间。(?<=---)(.*?)(?=---) 然而,这可以找到所有的出现,我只想要最后一个。

python-3.x regex regex-lookarounds
1个回答
2
投票

如果你将字符串与正则表达式

r'(?s).*^---\r?\n(.*)(?=^---)'

捕获组1将包含感兴趣的字符串。

演示

Python的regex引擎执行以下操作。

(?s)        set single-line mode so that '.' matches newlines
.*          match 0+ characters (greedily)
^---\r?\n   match line '---'
(.*)        match 0+ characters in capture group 1
(?=^---)    match '---' at beginning of line in positive lookahead

第一个 .*贪婪的它会吞噬字符,包括换行符和连字符,直到它吞噬了这一行。'---' 后面的字符串再加一行 '---'. 不能超过倒数第二行 '---' 因为如果要这样做,它就必须消耗掉最后的资源 '---' 行,但比赛后必须有最后的一个""。'---' 行。

© www.soinside.com 2019 - 2024. All rights reserved.