import re
string_to_check = "other_text...lalalaI want this partlalala...other_text"
p = re.compile("lalala(I want this part)lalala") # regex pattern
m = p.search(string_to_check) # use p.match if what you want is always at beginning of string
if m:
print m.group(1)
При попытке конвертировать Perl-программу в Python, которая анализирует имена функций из модулей, я столкнулся с этой проблемой и получил сообщение о том, что «группа» не определена. Вскоре я понял, что генерируется исключение, потому что p. match / p. search возвращает 0, если нет подходящей строки.
Таким образом, оператор группы не может работать на нем. Поэтому, чтобы избежать исключения, проверьте, сохранено ли совпадение, а затем примените оператор группы.
import re
filename = './file_to_parse.py'
p = re.compile('def (\w*)') # \w* greedily matches [a-zA-Z0-9_] character set
for each_line in open(filename,'r'):
m = p.match(each_line) # tries to match regex rule in p
if m:
m = m.group(1)
print m