2016-02-02 3 views
0

У меня есть следующее регулярное выражениерегулярное выражение не попадает в питона

(?<=<TEXT>).*?(?=</TEXT>) 

который, как предполагается, чтобы найти что-нибудь между <TEXT> и </TEXT>.

я вставляю свою строку на http://pythex.org/ и он делает работу, но после внедрения в Python не находит ничего

import re 
re.findall(r'(?<=<TEXT>).*?(?=</TEXT>)', text) 

где text содержит то, что я вставил в окно там (используется отладчик, наклеенный вывод переменная). Нужно ли обращать внимание на что-то особенное?

Некоторые дополнительный выход

>>> pattern = re.compile(r"(?<=<TEXT>).*?(?=</TEXT>)") 
>>> print(pattern) 
re.compile('(?<=<TEXT>).*?(?=</TEXT>)') 
>>> re.DOTALL 
16 
>>> pattern.findall(text) 
[] 
+0

Ваш код даже не работает. 'enc' - недопустимый аргумент для' open', и кажется, что 'file' является именем файла. – vaultah

+0

Как вы можете получить результат? Регулярно выглядит нормально. – jofel

+0

Можете ли вы привести нам пример содержимого файла? –

ответ

0

я получаю «правильный» выход с

re.findall(r'(?<=<TEXT>).*?(?=</TEXT>)', text, re.DOTALL) 

Я предполагал, значение по умолчанию в re быть то же самое с pythex, что он, очевидно, не ,

+0

Капля? после. * изменяет поведение, чтобы жадно включать все от первого до последнего. Тем не менее, это работает для меня с re.findall (r '(? <=). *? (? =)', text, re.DOTALL) ' – F1Rumors

0

Похоже, вы действительно должны рассматривать маркерный парсер, а не регулярные выражения - это XML-или html-ввод? В этом случае вам может потребоваться ответить на этот вопрос &. Ответ сверху: How Do I Parse XML in Python

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