字符串:
testing = "\nHello\nMy name is blah blah blah\nNice to meet you\nPS: Wait a second, I thought I know you.\nRegards\n\nUnknown\n\nHang on a minute\nI'm not done talking\n\nRegards\nOh OK"
打印:
Hello
My name is blah blah blah
Nice to meet you
PS: Wait a second, I thought I know you.
Regards
Unknown
Hang on a minute
I'm not done talking
Regards
Oh OK
所需结果:
My name is blah blah blah
Nice to meet you
PS: Wait a second, I thought I know you.
Regards
尝试的解决方案:
test = re.search('(Hello)([\s\S]*)(\n\n)', testing).group(2)
返回:
\nMy name is blah blah blah\nNice to meet you\nPS: Wait a second, I thought I know you.\nRegards\n\nUnknown\n\nHang on a minute\nI'm not done talking
但是,这遗漏了我认为与[\ s \ S]有关的第一个'\ n \ n'。有什么办法可以使我们在第一个'\ n \ n'上结束搜索?
谢谢!
答案 0 :(得分:1)
*
的重复者是 greedy ,它尽可能匹配直到\n\n
(这是字符串中的最后一个出现)。在其后放一个问号,使它成为 non-greedy ,使其尽可能地匹配:直到第一次匹配\n\n
为止:
test = re.search('(Hello)([\s\S]*?)(\n\n)', testing).group(2)
print(test)
输出:
Hello
My name is blah blah blah
Nice to meet you
PS: Wait a second, I thought I know you.
Regards