2016-09-02 8 views
1

なぜ、私は次のPythonコード正規表現のpython3 ---なぜ

import re 

def get_items(): 
    text = ''' 
    <a href="/archive/q-fin">Quantitative Finance</a> 
    <a href="/archive/stat">Statistics</a> 
    <a href="/help/general">General information</a> 
    <a href="/help/support">Support and Governance Model</a> 
    <a href="/help/find">Find</a> 
    ''' 
    pattern = re.compile(r'<a href="/archive/(.*?)">(.*?)</a>', re.S) 
    items = re.match(pattern, text).group(1) 
    print(items) 

get_items() 

を書かれているが、それは仕事をdoes't?

follwsとして正規表現:

pattern = re.compile(r'<a href="/archive/(.*?)">(.*?)</a>', re.S) 
+1

エラーが発生している可能性があります。一致しないため、re.matchはおそらく 'NoneType'を返しています。 –

答えて

0

あなたの正規表現は正しいですが、machtesを反復するために間違った呼び出しを使用しています。下記の修正バージョンを参照してくださいpattern.finditer(text)match.group(1)を使用します。

import re 

def get_items(): 
    text = ''' 
    <a href="/archive/q-fin">Quantitative Finance</a> 
    <a href="/archive/stat">Statistics</a> 
    <a href="/help/general">General information</a> 
    <a href="/help/support">Support and Governance Model</a> 
    <a href="/help/find">Find</a> 
    ''' 
    pattern = re.compile(r'<a href="/archive/(.*?)">(.*?)</a>', re.S) 

    for match in pattern.finditer(text): 
     yield match.group(1) 

for item in get_items(): 
    print(item)