在 python 的 re.findall 中试验正则表达式时,我遇到了这个问题:
line = "Lorem ipsum HELLO dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh GOODBYE all"
X = re.findall("(HELLO)(.*)(GOODBYE)", line, flags=re.MULTILINE)
print (y)
Run Code Online (Sandbox Code Playgroud)
这将输出:
('HELLO', ' dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh ', 'GOODBYE')
Run Code Online (Sandbox Code Playgroud)
但我想要的更像是......
[('HELLO', ' dolor sit amet', 'GOODBYE'), ('HELLO', 'sed diam nonummy nibh ', 'GOODBYE')]
Run Code Online (Sandbox Code Playgroud)
因此,不是一次取一个,re.findall(基于我定义模式的方式)似乎正在寻找 HELLO 和 GOODBYE 的第一次和最后一次出现来定义列表元素,然后它放置所有内容中间的其他人进入中间组。
有没有办法按照我的方式获得它?我想也许“序列化” HELLO 和 GOODBYE 对可能会有所帮助,有点像这样:
line = "Lorem ipsum HELLO_1 dolor sit amet, …Run Code Online (Sandbox Code Playgroud)