Skip to main content
 首页 » 编程设计

python之试图在 python 中捕获一个大的多行 block

2025年05月04日16webabcd

我是 python 的新手,在捕捉多行文本 block 时遇到问题 在运行 python 的树莓派上。

我正在尝试捕捉 HELLO 和 WORLD 之间的多行文本。

这个例子抛出错误 AttributeError: 'NoneType' 对象没有属性 'group'

linestring = """ 
TEST TEST HELLO 
TEST TEST PIZZA 
TEST TEST WORLD 
TEST TEST  
""" 
 
print(linestring) 
 
m = re.search('HELLO(.*)WORLD', linestring) 
print(m.group(1))  

请您参考如下方法:

您可以使用:

m = re.search(r'HELLO([\s\S]*?)WORLD', linestring) 

那是因为 . 默认不匹配换行符。或者使用 re.DOTALL标志:

m = re.search(r'HELLO(.*?)WORLD', linestring, re.DOTALL) 

这导致 . 匹配换行符。

请注意,我使用了惰性量词来代替:

linestring = """ 
TEST TEST HELLO 
TEST TEST PIZZA 
TEST TEST WORLD 
TEST TEST WORLD 
""" 

整场比赛的结果:

HELLO 
TEST TEST PIZZA 
TEST TEST WORLD 

代替:

HELLO 
TEST TEST PIZZA 
TEST TEST WORLD 
TEST TEST WORLD 

顺便说一句,你也可以使用 (?s) 作为 dotall 标志:

m = re.search(r'(?s)HELLO(.*?)WORLD', linestring)