そのフレーズの単語がhtmlタグ内に現れない限り、正規表現を使用してフレーズを一致させようとしています。
この例では、次の URL を使用しています。
url = "http://www.sidley.com/people/results.aspx?lastname=B"
私が使用している正規表現は次のとおりです。
regexp = "Babb(?!([^<]+)?>).+?Jonathan(?!([^<]+)?>).+?C(?!([^<]+)?>)"
page = urllib2.urlopen(url).read()
re.findall(regexp, page, re.DOTALL)
その正規表現を使用すると、次の出力が得られます。
[('', '', '')]
正規表現を(*外側の括弧に注意してください)に変更すると:
regexp = "(Babb(?!([^<]+)?>).+?Jonathan(?!([^<]+)?>).+?C(?!([^<]+)?>))"
page = urllib2.urlopen(url).read()
re.findall(regexp, page, re.DOTALL)
私は得る:
[('Babb, Jonathan C', '', '', '')]
これがなぜなのか、私は混乱しています。
1) これらの空の文字列を一致として取得するのはなぜですか? 2) 最初の正規表現で、実際の一致が得られないのはなぜですか?
そして最後に、
これを修正するにはどうすればよいですか?
よろしくお願いします。