нужно разделить строку на основе ключевого слова - PullRequest
0 голосов
/ 30 января 2019
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 голосов
/ 30 января 2019

Мы можем попробовать использовать re.findall в режиме DOT ALL:

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 необходим, потому что мы хотим, чтобы .* мог совпадать и потреблять символы новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...