re.match
berlabuh 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 MatchObject
instance yang sesuai . Kembali None
jika 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.search
mencari seluruh string, seperti dokumentasi mengatakan :
Memindai melalui string mencari lokasi di mana pola ekspresi reguler menghasilkan kecocokan, dan mengembalikan MatchObject
contoh yang sesuai . Kembali None
jika 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 match
vs.search
yang juga mencakup string multiline:
Python menawarkan dua operasi primitif berbeda berdasarkan ekspresi reguler: match
memeriksa kecocokan
hanya pada awal string, sementara search
memeriksa kecocokan
di mana saja dalam string (ini yang dilakukan Perl secara default).
Catatan yang match
mungkin berbeda dari search
bahkan ketika menggunakan ekspresi reguler yang dimulai dengan '^'
: '^'
cocok hanya pada awal string, atau dalam
MULTILINE
mode 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