2008-09-16 11 views
6

Python'da Regex hakkında bir öğretici, python'da re modülünü nasıl kullanacağımı açıklıyor, Regex'i doğru bir şekilde yazdım ve bu yüzden doğru ifadeyi yazdım. Regex test uygulaması seçim ve çalışmasını sağladı. Python'a yerleştirildiğinde başarısız oldu.Python ve "re"

Kafa çizilmesinden sonra, sorunu öğrendim, otomatik olarak deseninizin dizenin başında olmasını bekler. Ben bir düzeltme bulduk ama nasıl değiştirileceğini öğrenmek istiyorum:

regex = ".*(a_regex_of_pure_awesomeness)" 

regex = "a_regex_of_pure_awesomeness" 

Tamam

içine, standart bir URL regex var ama istediği hakkında herhangi bir potansiyel karışıklığı önlemek istedi kurtulmak ve muhtemelen komik gibi davranmak.

cevap

19

Python'da "eşleşme" ile "arama" arasında bir ayrım var; Eşleşme, yalnızca dizenin başlangıcındaki örüntüyü arar ve arama, dizenin herhangi bir yerinde başlayan deseni arar. Muhtemelen farklı yöntemlerle takıldı ediliyor

1

re.match() veya re.search() yöntemini kullanıyor musunuz? Anladığım kadarıyla, re.match() ifadenizin başlığında bir "^" olduğunu ve yalnızca metnin başına bakacağını, re.search() ise Perl düzenli ifadeleri gibi hareket ettiğini ve sadece başlangıç ​​ile eşleşeceğini ifadenizin başına bir "^" eklerseniz metnin. Umarım yardımcı olur.

3
>>> import re 
>>> pattern = re.compile("url") 
>>> string = " url" 
>>> pattern.match(string) 
>>> pattern.search(string) 
<_sre.SRE_Match object at 0xb7f7a6e8> 
4
from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(your_html) 
for a in soup.findAll('a', href=True): 
    # do something with `a` w/ href attribute 
    print a['href']