2013-09-30 6 views
6

Я пытаюсь найти строку, которая может содержать скобки или другие символы, которые не могут быть интерпретированы как простые строки.python re find строка, которая может содержать скобки

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

Я не управляю строкой, поскольку она получена из другого модуля. Моя проблема заключается в том, что строка может содержать «xyz» «, что приводит к ошибке, говорящей о наличии несогласных скобок.

Я уже пытался это без успеха

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

Почему вы используете регулярное выражение? Если строка должна быть регулярным выражением, вы должны рассматривать недействительные регулярные выражения как «xyz» как ошибки. Если его не поддерживает регулярное выражение, просто используйте 'text.find (string)' и полностью пропустите модуль regex. – tdelaney

+0

Да - удивительный. – JohnGalt

ответ

10

Вы можете использовать re.escape() бежать строку:

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

Из документации:

возвращенная строка со всеми не-букв и цифр управляющими последовательностями ; это полезно, если вы хотите совместить произвольную литеральную строку, которая может содержать метасимволы регулярного выражения.

Смежные вопросы