string = """Hello World A \n Block1 \n Block2 \n \n Hello World B \n Block1 \n Block2"""
我想在python中使用正则表达式将字符串分成两部分,其中第一部分应该包含Hello World A到Hello World B的块,第二部分应该包含Hello World B到的末尾的块字符串。
我尝试了re.findall(
),但是并没有取得预期的结果。我想知道可以在其中使用哪个正则表达式语句?
答案 0 :(得分:1)
我们可以尝试在DOT ALL模式下使用re.findall
:
string = "Hello World A \n Block1 \n Block2 \n \n Hello World B \n Block1 \n Block2"
result = re.findall("Hello World.*?(?=Hello World|$)", string, re.DOTALL)
print(result)
['Hello World A \n Block1 \n Block2 \n \n ', 'Hello World B \n Block1 \n Block2']
这是我使用的模式:
Hello World.*?(?=Hello World|$)
这与Hello World
匹配,后面跟任何匹配的条件,只要我们在字符串的最后不消耗另一个Hello World
,或。必须使用DOT ALL模式,因为我们希望.*
能够在换行符之间进行匹配和使用。