Ne Python's re arasındaki farktır.arama ve yeniden.maç?
Python re
module search()
match()
fonksiyonları arasındaki fark nedir?
documentation (current documentation) okudum, ama hiç hatırlamıyor. Bakmaya devam ederim ve yeniden öğrenmek. Birisi (belki) kafamda sopa", yani açıkça örneklerle cevap olacağını umuyorum. Ya da en azından daha iyi bir yer kendi soruma geri dönmek zorunda kalacağım ve yeniden öğrenmek için daha az zaman alacak.
CEVAP
re.match
dizenin başına yerleştirilir. Bu yeni satır ile bir ilgisi yok, desen ^
kullanarak aynı değildir.
re.match documentation dediği gibi:
Sıfır veya daha fazla karakter varsa dize başındaeşleşen düzenli ifade deseni, dönüş
MatchObject
bir örneği ilgili. Eğer geri dize mu yoksaNone
maç desen; bunu unutmayın sıfır uzunlukta bir maç farklı.Eğer bir eşleşme bulmak istiyorsanız Not: her yerde dize,
search()
yerine.
re.search
Tüm dize, the documentation says olarak arar:
Dize ile tarayınbir arıyor konum: düzenli ifade desen eşleşmesi, ve dönüş üreten
MatchObject
örneği ilgili. Dönüş yok pozisyonNone
dize desen; unutmayın maçlar bu bulgu farklıdır sıfır uzunlukta bir noktada maç string.
Eğer dize başında maç gerekiyorsa, veya tüm dizeyi Eşleştir match
kullanın. Daha hızlı. Aksi takdirde search
kullanın.
Belgelerine de çok satırlı dizeleri kapsar specific section for match
vs. search
bir:
Python iki farklı ilkel sunmaktadır işlemleri düzenli dayanarak ifadeler: bir maç için
match
çekler sadece başındadize,search
bir maç için kontrol ederken her yerde(bu nedir dizesinde Varsayılan olarak yapar Perl).
match
search
farklılık gösterebilir düzenli ifade kullanarak bile'^'
başlangıç:'^'
sadece maçlar dizenin başında veyaMULTILINE
da hemen modu bir yeni satır takip ediyorum. “match
” operasyon başarılı olurdesen yalnızca de uyuyorbaşlayındize modu ne olursa olsun, ya da başlayan pozisyon *24 isteğe bağlı*tarafından verilen argüman ne olursa olsun ister bir yeni satır önce gelir.
Şimdi, bu kadar konuşma yeter. Bazı örnek kod:
# example code:
string_with_newlines = """something
someotherthing"""
import re
print re.match('some', string_with_newlines) # matches
print re.match('someother',
string_with_newlines) # won't match
print re.match('^someother', string_with_newlines,
re.MULTILINE) # also won't match
print re.search('someother',
string_with_newlines) # finds something
print re.search('^someother', string_with_newlines,
re.MULTILINE) # also finds something
m = re.compile('thing$', re.MULTILINE)
print m.match(string_with_newlines) # no match
print m.match(string_with_newlines, pos=4) # matches
print m.search(string_with_newlines,
re.MULTILINE) # also matches
@Staticmethod ve @Python classmethod a...
Çözüm Yapı arasındaki fark, Çözümü Yen...
Eski stil ve yeni stil Python sınıflar...
İsinstance arasındaki farklar() ve typ...
Nasıl (yeniden) Python bir modülü kald...