文字列の先頭や末尾にのみマッチしたいときがあります。
- たとえば、「山田」さんを取り出したいが、「小山田」さんはマッチさせたくないとき。
>>> import re >>> members = 'yamada hirobumi\nkoyamada kiyotako\nsuzuki sanetomi\nyamada aritomo' >>> print members yamada hirobumi koyamada kiyotako suzuki sanetomi yamada aritomo
- 普通のマッチでは小山田さんもヒットします。
>>> print re.findall('yamada.*',members) ['yamada hirobumi', 'yamada kiyotako', 'yamada aritomo']- 行頭を指定する正規表現 ^ を使うと、最初の人物しかヒットしません。
>>> print re.findall('^yamada.*',members) ['yamada hirobumi']- re.Mオプションを追加して、multilineモードを指定すると、きちんとヒットします。
>>> print re.findall('^yamada.*',members,re.M) ['yamada hirobumi', 'yamada aritomo']- 行末をヒットさせたい場合は $ を使います。
>>> print re.findall('.*o$',members,re.M) ['koyamada kiyotako', 'yamada aritomo']
Multilineモードについては、"http://www.python.jp/doc/release/lib/matching-searching.html"を参考にしました。