2013-09-30 2 views
6

köşeli parantezleri içerebilen dizeyi buluyorum Ayraçlar veya düz dizeler olarak yorumlanamayan diğer karakterler içerebilen bir dizeyi aramaya çalışıyorum.python re

def findstring(string, text): 
    match = re.search(string, text) 

Dizeyi başka bir modülden türetildiği gibi denetlemiyorum. Benim sorunum, dizinin "xyz)" "içermesidir, bu da bana benzersiz braketlerin olduğunu söyleyen bir hatayı ortaya çıkarmaktadır.

Zaten başarılı olamadı bu denedik

match = re.search(r'%s' % string, text) 
+0

Neden düzenli ifadeyi kullanıyorsunuz? Dizenin bir regex olması gerekiyorsa, geçersiz regex'leri 'xyz' gibi hatalar olarak ele almalısınız. Eğer bir regex değilse, sadece 'text.find (string)' kullanın ve regex modülünü tamamen atlayın. – tdelaney

+0

Evet - harika. – JohnGalt

cevap

10

Sen dize kaçmak için re.escape() kullanabilirsiniz: ters bölü işareti olmayan tüm alphanumerics ile

Dönüş dizesi: Dokümanlar

match = re.search(re.escape(string), text) 

; Bu, normal ifade meta karakterlerine sahip olabilecek rastgele bir değişmez dizeyi eşleştirmek istiyorsanız kullanışlıdır.