需要根据关键字拆分字符串

时间:2019-01-30 05:46:38

标签: regex python-3.x

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(),但是并没有取得预期的结果。我想知道可以在其中使用哪个正则表达式语句?

1 个答案:

答案 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模式,因为我们希望.*能够在换行符之间进行匹配和使用。