細繩: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"打?。篐elloMy name is blah blah blahNice to meet youPS: Wait a second, I thought I know you.RegardsUnknownHang on a minuteI'm not done talkingRegardsOh OK期望的結果:My name is blah blah blahNice to meet youPS: 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' 處結束搜索?
1 回答

慕的地10843
TA貢獻1785條經驗 獲得超8個贊
重復*器是貪心的,它盡可能多地匹配直到\n\n(這是字符串中的最后一次出現)。在它后面放一個問號以使其不貪婪,以便它盡可能少地匹配:直到它匹配的第一次出現\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
添加回答
舉報
0/150
提交
取消