我有一个文本文件,其中的数据按以下方式打印
---
1A
1B
1C
---
---
2A
2B
2C
---
---
3A
3B
3C
.
.
3n
---
NA
.
.
Nn
---
本质上是由 --- 到 --- 行包围的文本行。
我希望提取最后一次出现的 --- 到 --- 之间的内容,到目前为止,使用正则表达式我已设法将其范围缩小到 (?<=---)(.*?)(?=---)
然而,这会找到所有出现的情况,而我只想要最后一个。
最佳答案
如果将字符串与正则表达式匹配
r'(?s).*^---\r?\n(.*)(?=^---)'
捕获组 1 将包含感兴趣的字符串。
Python 的正则表达式引擎执行以下操作。
(?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
第一个 .*
贪婪,会吞噬字符,包括换行符和连字符,直到它消耗掉后面的行 '---'
字符串再多一行 '---'
。它不能超出倒数第二行 '---'
因为如果这样做,它必须消耗最后一个 '---'
行,但匹配后面必须跟最后一个 '---'
行。
关于python-3.x - 搜索特定字符之间的最后一组文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62224295/