我是 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)
