获取 Python 中匹配的正则表达式上方的行

Get the line above the matched regex expression in Python

我想提取正则表达式匹配表达式上方的行。

Text 1
28-Apr
Text2
Text3
29-Apr

输出:['Text 1', 'Text3']

为此,您需要找到模式出现时的行号,然后通过从找到的行号中减去 1 来获得上面的行。例如,如果您的模式出现在第 2 行和第 4 行,则需要获取第 1 行和第 3 行。请看下面的示例代码:

import re

string = """Text 1
28-Apr
Text2
Text3
29-Apr"""





pattern = '\d*\-\w*'
lines_number  = []
for m in re.finditer(pattern, string):
    start = m.start()
    lineno = string.count('\n', 0, start)


    lines_number.append(lineno)

for l in lines_number:
    print(string.split('\n')[l-1])