以下に一致する単純な正規表現コードを試していました。
line = 'blah black blacksheep blah'
if re.match(r'(\bblack\b)', line):
print 'found it!
私は何を間違っていますか、それ自体で「黒」を見つけることができませんか?
ドキュメントから:
re.match(pattern, string, flags=0)
stringの先頭の 0 個以上の文字が正規表現pattern
MatchObject
に一致する場合、対応するインスタンスを返します。
代わりにre.search
orを使用することをお勧めします。re.findall
re.search
またはre.findall
ここで使用する必要があります:
>>> strs = 'blah black blacksheep blah'
>>> re.search(r'\bblack\b', strs).group(0)
'black'
>>> re.findall(r'\bblack\b', strs)
['black']
代わりre.search
にre.match
. ドキュメントから:
7.2.5.3. search() と match()
Python は、正規表現に基づいた 2 つの異なるプリミティブ操作を提供します:
re.match()
文字列の先頭でのみ一致をre.search()
チェックし、文字列内の任意の場所で一致をチェックします (これは Perl がデフォルトで行うことです)。
使用re.search()
(文字列全体で一致しない場合は None を返します):
line = 'blah black blacksheep blah'
if re.search(r'(\bblack\b)', line):
print 'found it!