2015-01-31 2 views
0

Я использую регулярные выражения в Python. Я пытаюсь вытащить все данные между двумя переменными, он начинается с {"justin_h и заканчивается на"} специальных символов, но у меня возникают проблемы с синтаксисом regex.Строка после экранированных символов в Regex

Я использую:

[{]["][justin_h...["][}] 

И не возвращает никаких результатов. Я знаю, что он там, и [{] ["] возвращает результаты, но когда я начинаю строку, это не работает. Где я иду не так?

+0

Для соответствия '{' или любому другому специальному символу вы можете использовать '\ {'. Кроме того, убедитесь, что вы используете необработанные строки, то есть 'r'blabla'' вместо' 'blabla''. Было бы неплохо, если бы вы предоставили точную часть вашего согласованного текста и ожидаемый результат. –

+0

Я читал это, используя [], но адаптация регулярного выражения с \ still не возвращает результатов. –

+0

@ user5061: Вы также можете использовать регулярные выражения '[{]' для многих языков. @ajh: '...' будет соответствовать ровно 3 символам - это то, что вы хотите? Чтобы соответствовать любой последовательности символов, вам нужно вместо этого использовать '. *'. – psmears

ответ

0

Использовать группы захвата или поисковые запросы .

r'\{"justin_h(.*?)"}' 

Grab строка, которую вы хотите от индекса группы 1. Это не будет работать, если часть, которую вы хотите, чтобы захватить содержит символ новой строки. для этого случая необходимо использовать флаг (?s) DOTALL.

r'(?s)\{"justin_h(.*?)"}' 

Пример:

>>> re.findall(r'\{"justin_h(.*?)"}', 'foo{"justin_hfoobar"}barfoo') 
['foobar'] 
+0

Нужно ли мне избегать последнего "} в конце регулярного выражения? –

+0

Нет, вам не нужно избегать последнего'} ' –

+0

Хммм, похоже, он не возвращает никаких результатов: /, работает ли это в Python? –

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