我在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\ *[(]\ *
更改常规模式的结尾,那么它匹配。
答案 0 :(得分:1)
如果量词是唯一的区别,那么它意味着文本中没有空格,是不是它是原始字符串中的标签?
我会用空格\s
替换转义的空格。 \s
匹配空白字符,这是一个空格,一个标签\r
和\n
(和其他空白字符)
m = re.search(r'''component\s+(\w+)\s+is\s+
port\s*[(]\s+''', data, re.I | re.VERBOSE)