2013-09-30 11 views
6

Sto cercando di cercare una stringa che potrebbe contenere parentesi o altri caratteri che potrebbero non essere interpretati come stringhe semplici.python trovare la stringa che potrebbe contenere parentesi

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

non controllo la stringa come è derivato da un altro modulo. Il mio problema è che la stringa potrebbe contenere "xyz)", che genera un errore che mi dice che ci sono parentesi non abbinate.

Ho già provato questo senza successo

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

perché stai usando regex a tutti? Se si suppone che la stringa sia un'espressione regolare, dovresti trattare gli errori regolari come "xyz" come errori. Se non è supposta per essere un'espressione regolare, basta usare 'text.find (stringa)' e saltare completamente il modulo regex. – tdelaney

+0

Sì, fantastico. – JohnGalt

risposta

10

È possibile utilizzare re.escape() per sfuggire alla stringa:

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

Da docs:

stringa di ritorno con tutti i non-alfanumerici backslash ; questo è utile se vuoi abbinare una stringa letterale arbitraria che potrebbe avere metacaratteri di espressioni regolari in essa.

Problemi correlati