首页 > 解决方案 > 主题标签会干扰正则表达式中的前瞻吗?

问题描述

我试图在后视和前瞻之间捕获一些数据。我的测试字符串:

#2000 STEPS OF EQUILIBRATION AT LAMBDA 0 COMPLETED
#STARTING COLLECTION OF ENSEMBLE AVERAGE
TI 2000 0.0000 0.0000 0.0000 0.0000 -25.1615 -26.5570 23.3878 41.9173
TI 2050 0.0000 0.0000 0.0000 0.0000 -27.0891 -27.0786 27.0495 27.3411
TI 2100 0.0000 0.0000 0.0000 0.0000 -26.1894 -26.6384 14.5814 21.0244
TI 2150 0.0000 0.0000 0.0000 0.0000 -24.3845 -25.8921 21.6334 21.2261
TI 2200 0.0000 0.0000 0.0000 0.0000 -27.1072 -26.1944 27.0034 22.6632
TI 2250 0.0000 0.0000 0.0000 0.0000 -22.1403 -25.3868 21.6304 22.4575
TI 2300 0.0000 0.0000 0.0000 0.0000 -24.9672 -25.3171 18.2003 21.7503
TI 2350 0.0000 0.0000 0.0000 0.0000 -23.7720 -25.0970 12.1601 20.3842
TI 2400 0.0000 0.0000 0.0000 0.0000 -25.3668 -25.1306 21.8929 20.5723
#NEW TI WINDOW: LAMBDA 0.05

我尝试使用以下正则表达式将 TI 行作为一个块:

import re

pat = "(?<=STARTING COLLECTION OF ENSEMBLE AVERAGE\n)[\w\W]+(?=#NEW TI WINDOW)"

dats = re.findall(pat,string)

它在pythex上运行得非常好,但在 spyder 中,我的模式超越了前瞻并捕获了所有内容。即使我在前瞻中使用 \ # ,它仍然会捕获所有内容。谁能告诉我为什么会这样?

标签: pythonregexpython-3.x

解决方案


re.findall()需要捕获组,如

pat = "STARTING COLLECTION OF ENSEMBLE AVERAGE\n([\w\W]+?)#NEW TI WINDOW"
dats = re.findall(pat, string)
print(dats)

在 regex101.com 上查看演示


推荐阅读