re.matchberlabuh di awal string. Itu tidak ada hubungannya dengan baris baru, jadi tidak sama dengan menggunakan ^dalam pola.
Seperti dokumentasi re.match mengatakan:
Jika nol atau lebih karakter di
awal string cocok dengan pola ekspresi reguler, kembalikan MatchObjectinstance yang sesuai . Kembali Nonejika string tidak cocok dengan pola; perhatikan bahwa ini berbeda dari pencocokan panjang nol.
Catatan: Jika Anda ingin mencari kecocokan di mana saja dalam string, gunakan search()
sebagai gantinya.
re.searchmencari seluruh string, seperti dokumentasi mengatakan :
Memindai melalui string mencari lokasi di mana pola ekspresi reguler menghasilkan kecocokan, dan mengembalikan MatchObjectcontoh yang sesuai . Kembali Nonejika tidak ada posisi dalam string yang cocok dengan pola; perhatikan bahwa ini berbeda dari menemukan kecocokan panjang nol di beberapa titik dalam string.
Jadi, jika Anda harus mencocokkan pada awal string, atau untuk mencocokkan seluruh penggunaan string match. Lebih cepat. Kalau tidak gunakan search.
Dokumentasi ini memiliki bagian khusus untuk matchvs.search yang juga mencakup string multiline:
Python menawarkan dua operasi primitif berbeda berdasarkan ekspresi reguler: matchmemeriksa kecocokan
hanya pada awal string, sementara searchmemeriksa kecocokan
di mana saja dalam string (ini yang dilakukan Perl secara default).
Catatan yang matchmungkin berbeda dari search
bahkan ketika menggunakan ekspresi reguler yang dimulai dengan '^': '^'cocok hanya pada awal string, atau dalam
MULTILINEmode juga segera mengikuti baris baru. Operasi " match" hanya berhasil jika pola cocok pada awal string
terlepas dari mode, atau pada posisi awal yang diberikan oleh pos
argumen opsional terlepas dari apakah baris baru mendahuluinya.
Sekarang, cukup bicara. Saatnya melihat beberapa kode contoh:
# example code:
string_with_newlines = """something
someotherthing"""
import re
print re.match('some', string_with_newlines) # matches
print re.match('someother',
string_with_newlines) # won't match
print re.match('^someother', string_with_newlines,
re.MULTILINE) # also won't match
print re.search('someother',
string_with_newlines) # finds something
print re.search('^someother', string_with_newlines,
re.MULTILINE) # also finds something
m = re.compile('thing$', re.MULTILINE)
print m.match(string_with_newlines) # no match
print m.match(string_with_newlines, pos=4) # matches
print m.search(string_with_newlines,
re.MULTILINE) # also matches