SORU
8 EKİM 2008, ÇARŞAMBA


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
8 EKİM 2008, ÇARŞAMBA


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 yoksa None 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 pozisyon None 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 searchfarklılık gösterebilir düzenli ifade kullanarak bile '^' başlangıç: '^' sadece maçlar dizenin başında veya MULTILINE 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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • J Medema

    J Medema

    11 EKİM 2006
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012