python 要提取包含字符串和任意位数的两行之间的文本,必须实现哪个正则表达式?[duplicate]

4sup72z8  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(98)
    • 此问题在此处已有答案**:

Python look-behind regex issue: Invalid regular expression: look-behind requires fixed-width pattern(2个答案)
2小时前关门了。
这是我的密码

text = 'LIBRO 1\ndsfsdf\nasdas\nfgfghf\nLIBRO 21\nhghj\nghjhjk\nghjhk\nLIBRO 333'

result = re.findall(r'(?<=LIBRO \d+\n)(.*?)(?=\nLIBRO)', text, re.DOTALL)
print(result)

这是我得到的错误:

re.error: look-behind requires fixed-width pattern

期望的结果是:

['dsfsdf\nasdas\nfgfghf', 'nhghj\nghjhjk\nghjhk']
uqcuzwp8

uqcuzwp81#

你可以用split代替findall,删除结果中的空条目,因为在第一个LIBRO * 之前 * 的内容会有一个结果:

result = [s.strip() for s in re.split(r'(?m)^LIBRO \d+$', text) if s]

相关问题