2015-06-15 5 views
3

Я получаю сообщение об ошибке в функции модуля регулярного выражения .match для TypeError: требуется целое число.Python Regex-- TypeError: требуется целое число

Вот мой код:

hAndL = hAndL.replace('epsilo\ell','epsilon') 
pattern = re.compile("\frac{.*?}{ \frac{.*?}{.*?}}") 
matching = pattern.match(pattern,hAndL) 

HANDL является строкой и картина a..pattern.

Я не уверен, почему эта ошибка происходит, любая помощь приветствуется!

+3

Второй аргумент 'match()' является целым числом начальной позиции, а не строкой. – Jkdc

ответ

6

Когда вы re.compile регулярное выражение, вы не нужно передать объект регулярок обратно к себе. За документации:

The sequence

prog = re.compile(pattern) 
result = prog.match(string) 

is equivalent to

result = re.match(pattern, string) 

pattern уже предусмотрено, поэтому в вашем примере:

pattern.match(pattern, hAndL) 

эквивалентно:

re.match(pattern, pattern, hAndL) 
       #^passing pattern twice 
         #^hAndL becomes third parameter 

где третий параметр re.match является flags, который должно быть целым числом. Вместо этого вы должны сделать:

pattern.match(hAndL) 
+0

спасибо! это было очень полезно – zara

+1

@zara, я верю, что вы можете принять этот ответ. –

3
hAndL = hAndL.replace('epsilo\ell','epsilon') 
pattern = re.compile("\frac{.*?}{ \frac{.*?}{.*?}}") 
matching = pattern.match(hAndL) 
Смежные вопросы