我有一个文本文件,其数据的打印方式是这样的
---
1A
1B
1C
---
---
2A
2B
2C
---
---
3A
3B
3C
.
.
3n
---
NA
.
.
Nn
---
本质上是围绕着------到------的文字行。
我想提取最后出现的---到---之间的内容,到目前为止,我已经用regex把范围缩小到了---到---之间。(?<=---)(.*?)(?=---)
然而,这可以找到所有的出现,我只想要最后一个。
如果你将字符串与正则表达式
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
第一个 .*
贪婪的它会吞噬字符,包括换行符和连字符,直到它吞噬了这一行。'---'
后面的字符串再加一行 '---'
. 不能超过倒数第二行 '---'
因为如果要这样做,它就必须消耗掉最后的资源 '---'
行,但比赛后必须有最后的一个""。'---'
行。