Python 3 Как получить строку между двумя точками с помощью регулярных выражений?

Как получить строку между двумя точками с помощью регулярных выражений или любой другой библиотеки в Python 3?

Например: Blah Blah ABC строка, которую нужно получить XYZ Blah Blah

ABC и XYZ являются переменными, которые обозначают начало и конец строки, которую я должен получить.

Ответы на вопрос(2)

Решение Вопроса

использованиеABC а такжеXYZ в качестве якорей с утверждениями о прогнозировании и прогнозировании:

(?<=ABC).*?(?=XYZ)

(?<=...) проверочное утверждение соответствует только тому месту в тексте, которому предшествовалABC, Так же,(?=XYZ) совпадения в месте, за которым следуетXYZ, Вместе они образуют два якоря, которые ограничивают.* выражение, которое соответствует чему-либо.

Вы можете найти все такие закрепленные фрагменты текста с помощью:re.findall()

for matchedtext in re.findall(r'(?<=ABC).*?(?=XYZ)', inputtext):

ЕслиABC а такжеXYZ переменные, вы хотите использоватьre.escape() (чтобы предотвратить интерпретацию любого их содержимого как синтаксиса регулярных выражений) и интерполировать:

re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext)
 sgp17 июн. 2013 г., 19:36
Большое спасибо @Martijin Это работает: D

Я думаю, что это то, что вы хотите:

import re
match = re.search('ABC(.*)XYZ','Blah blah ABC the string to be retrieved XYZ Blah Blah')
print match.group(1)
 sgp17 июн. 2013 г., 17:52
@ user1572508 ABC и XYZ - это переменные, которые нужно взять у пользователя.
 Casimir et Hippolyte17 июн. 2013 г., 17:51
хороший способ, но добавьте знак вопроса после * квантификатора, чтобы сделать его ленивым, если вы нене хочу соответствовать что-то вродеABC( ... XYZ ... )XYZ
 Ooker27 авг. 2015 г., 16:32
это может работать для Python2, а не 3.
 Yogeesh Seralathan18 нояб. 2017 г., 18:08
Что если я просто хочу контент в(. *) '?

Ваш ответ на вопрос