2012-02-20 5 views
2

私はこの次のプログラムをPythonで持っています。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

唯一の違いがある場合は、テキストにスペースがないことを意味します。元の文字列のタブである可能性がありますか?

エスケープされたスペースを空白のスペースで置き換えます(\s)。 \sは空白文字をマッチングされ、これは、スペース、タブ、\r\n(および他の空白文字)

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

うんです。タブであり、スペースではありません。ありがとう! – Dilawar