2013-11-22 16 views
6

Düzenli ifadeleri derlerken meta derleyicilerin derlenmesi veya kullanılmasının bir yolu var mı? geçerli kod şöyle görünür:Python düzenli ifadelerinde meta karakterleri kullanma ve göz ardı etme arasında geçiş yapmak için basit bir yol var mı?


Güncel kodu:

import re 

the_value = '192.168.1.1' 
the_regex = re.compile(the_value) 

my_collection = ['192a168b1c1', '192.168.1.1'] 

my_collection.find_matching(the_regex) 

result = ['192a168b1c1', '192.168.1.1'] 


ideal çözüm gibi görünecektir:

import re 

the_value = '192.168.1.1' 
the_regex = re.compile(the_value, use_metacharacters=False) 

my_collection = ['192a168b1c1', '192.168.1.1'] 

my_collection.find_matching(the_regex) 

result = ['192.168.1.1'] 

ideal bir çözüm olur 012 olsunkütüphanesi, mümkün olduğunca sürece dahil olmaktan kaçınmak için metakarakterlerin devre dışı bırakılmasını sağlar.

+1

sen niye yeniden modülünü kullanmak istiyorsunuz, statik dize arıyorsanız? Neden sadece dizeleri eşitlikle karşılaştırmıyor veya bir alt dizini aramıyor? –

cevap

7

Hayır. Ancak:

the_regex = re.compile(re.escape(the_value)) 
6

Bunun re.escape() işlevini kullanın.

Dize olmayan tüm alfasayısal olmayan dizgileri döndür; Bu, normal ifade meta karakterlerine sahip olabilecek rastgele bir değişmez dizeyi eşleştirmek istiyorsanız kullanışlıdır.

>>> import re 
>>> re.escape('192.168.1.1') 
'192\\.168\\.1\\.1' 
+0

Teşekkürler! Ignacio'nun cevabını kabul ediyorum çünkü teknik olarak tam bir çözüm. Ancak, cevabınızı ve yardımlarınızı takdir ediyorum :). –

+0

Bence bu, belgelere bağlandığı ve alıntıladığı için daha iyi bir cevap… –

İlgili konular