Usa ABC
e XYZ
come ancore con asserzioni look-dietro e look-ahead:
(?<=ABC).*?(?=XYZ)
L'affermazione (?<=...)
look-dietro corrisponde solo alla posizione nel testo che è stato preceduto da ABC
. Analogamente, (?=XYZ)
corrisponde alla posizione seguita da XYZ
. Insieme formano due ancore che limitano l'espressione .*
, che corrisponde a qualsiasi cosa.
Potete trovare tutti questi pezzi ancorate di testo con re.findall()
:
for matchedtext in re.findall(r'(?<=ABC).*?(?=XYZ)', inputtext):
Se ABC
e XYZ
sono variabili, che si desidera utilizzare re.escape()
(per evitare qualsiasi del loro contenuto da essere interpretate come sintassi delle espressioni regolari) su di loro e interpolare:
re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext)
fonte
2013-06-17 15:41:50
Grazie mille @Martijin Funziona: D – sgp