re.match
は、文字列のbeginningでのみ一致します。
def url_match(line, url):
match = re.match(r'<a href="(?P<url>[^"]*?)"', line)
return match and match.groupdict()['url'] == url:
使用例:
>>> url_match('<a href="test">', 'test')
True
>>> url_match('<a href="test">', 'te')
False
>>> url_match('this is a <a href="test">', 'test')
False
パターンがre.search
を使用し、ラインのどこにでも発生する可能性があります。
def url_search(line, url):
match = re.search(r'<a href="(?P<url>[^"]*?)"', line)
return match and match.groupdict()['url'] == url:
使用例:
>>> url_search('<a href="test">', 'test')
True
>>> url_search('<a href="test">', 'te')
False
>>> url_search('this is a <a href="test">', 'test')
True
N.B:あなたは正規表現を使用してHTMLを解析しようとしている場合は、先に進む前に、RegEx match open tags except XHTML self-contained tagsをお読みください。
正規表現を開発するには[Rubular](http://rubular.com/)をお勧めします。これは非常に時間を節約します。ここで私は同様のパターンで誰かを助けた別の質問があります:http://stackoverflow.com/questions/4716787/problem-with-ruby-regular-expression –