搜索特定字符之间的最后一组文本
searching for last group of text between specific characters
我有一个文本文件,其数据按以下方式打印
---
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
第一个 .*
贪婪地吞噬字符,包括换行符和连字符,直到它消耗完 '---'
行,然后在字符串中再跟一行 '---'
.它不能超出倒数第二行 '---'
,因为它要这样做就必须消耗最后的 '---'
行,但是匹配必须跟在最后的 '---'
行之后。
我有一个文本文件,其数据按以下方式打印
---
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
第一个 .*
贪婪地吞噬字符,包括换行符和连字符,直到它消耗完 '---'
行,然后在字符串中再跟一行 '---'
.它不能超出倒数第二行 '---'
,因为它要这样做就必须消耗最后的 '---'
行,但是匹配必须跟在最后的 '---'
行之后。