python多线正则表达式捕获

时间:2017-01-05 18:17:34

标签: python-2.7 multiline

我有以下字符串:

hello
abcd
pqrs
123
123
123

我的目标是捕捉所有开始打招呼,直到第一次出现123。 所以预期的输出是:

hello
abcd
pqrs
123

我使用了以下内容:

output=re.findall('hello.*123?',input_string,re.DOTALL)

但输出如下:

['hello\nabcd\npqrs\n123\n123\n123']

有没有办法使用?为123进行非贪婪的查找?或者还有其他方法可以达到预期的产量吗?

1 个答案:

答案 0 :(得分:1)

尝试使用lookhead。您正在寻找一组字符,然后是\n123\n

import re

input_string = """hello
abcd
pqrs
123
123
123"""

output_string = re.search('[\w\n]+(?=\n123\n)', input_string).group(0)

print(output_string)

#hello
#abcd
#pqrs
#123

我希望这证明有用。