Странное поведение регулярного шаблона в Python - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть следующая программа на Python.

import re

data = '''component FA_8 is
port(   a : in bit_vector(7 downto 0);
    b: in bit_vector(7 downto 0);
    s: out bit_vector(7 downto 0);
    c: out bit);
end component;'''

m = re.search(r'''component\ +(\w+)\ +is[\ \n]+
                port\ *[(]\ +''', data, re.I | re.VERBOSE)

if m:
    print m.group()
else:
    print "Cant find pattern"

Я не могу понять, почему она не работает.Если я изменяю окончание обычного шаблона на port\ *[(]\ *, то он совпадает.

1 Ответ

1 голос
/ 20 февраля 2012

Если квантификатор является единственной разницей, то это означает, что в тексте нет пробела, может быть, это вкладка в исходной строке?

Я бы заменил пробел на пробел \s. \s соответствует пробелу, это пробел, табуляция, \r и \n (и другие пробельные символы)

m = re.search(r'''component\s+(\w+)\s+is\s+
            port\s*[(]\s+''', data, re.I | re.VERBOSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...