Python中奇怪的常规模式行为

时间:2012-02-20 08:05:06

标签: regex python-2.7

我在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 个答案:

答案 0 :(得分:1)

如果量词是唯一的区别,那么它意味着文本中没有空格,是不是它是原始字符串中的标签?

我会用空格\s替换转义的空格。 \s匹配空白字符,这是一个空格,一个标签\r\n(和其他空白字符)

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