2013-06-17 18 views
5

Python 3'teki regex veya başka bir kütüphaneyi kullanarak iki nokta arasındaki dizeyi nasıl alabilirim? eg içinPython 3 Regex kullanarak iki nokta arasında ip nasıl alınır?

: Blah blah ABC dize

ABC ve XYZ ben almak zorunda dize başlangıcını ve sonunu belirtmek değişkenler XYZ filan

alınacak. arkasında görünüm ve göz-önünde iddiaları ile çapa olarak

cevap

4

Kullanım ABC ve XYZ:

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

(?<=...) olan ileriye dönük iddia sadece ABC ile başlar metinde yerde eşleşir. Benzer şekilde, (?=XYZ), XYZ izleyen yerde eşleşir. Birlikte, her şeyle eşleşen .* ifadesini sınırlayan iki çapa oluştururlar.

Sen re.findall() ile metnin tüm bu demirlemiş parçalarını bulabilirsiniz

: değişkendir

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

ABC ise ve XYZ, siz (normal ifade sözdizimi olarak yorumlanmasını önlemek içeriklerinin herhangi önlemek için) re.escape() kullanmak istiyorum onları ve interpolate tarih:

re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext) 
+0

Çok teşekkürler @Martijin Çalışır: D – sgp

2

Bunun istediğini düşünüyorum:

import re 
match = re.search('ABC(.*)XYZ','Blah blah ABC the string to be retrieved XYZ Blah Blah') 
print match.group(1) 
+1

iyi bir yol, ancak ABC (... XYZ ...) gibi bir şeyle eşleşmek istemiyorsanız tembel hale getirmek için * niceleyiciden sonra bir soru işareti ekleyin XYZ' –

+0

@ user1572508 ABC ve XYZ, – sgp

+0

numaralı kullanıcıdan alınacak değişkenlerdir. Bu, Python2 için değil, 3 için kullanılabilir. – Ooker

İlgili konular