Bagaimana cara memeriksa apakah string cocok dengan pola ini?
Huruf besar, angka, huruf besar, angka ...
Contoh, Ini akan cocok:
A1B2
B10L1
C1N200J1
Ini tidak akan ('^' menunjukkan masalah)
a1B2
^
A10B
^
AB400
^
python
regex
string-matching
DanielTA
sumber
sumber
^([A-Z]\d+){1,}$
seperti ini?B
dan bukan denganA
.A
danB
apakah huruf kecil benar?A10b
danaB400
?Jawaban:
Sunting: Seperti yang tercantum dalam komentar,
match
hanya memeriksa kecocokan di awal string sementarare.search()
akan mencocokkan pola di mana saja dalam string. (Lihat juga: https://docs.python.org/library/re.html#search-vs-match )sumber
re.match
:If zero or more characters at the beginning of string match the regular expression pattern
. Saya hanya menghabiskan waktu 30 menit untuk mencoba memahami mengapa saya tidak dapat mencocokkan sesuatu di akhir string. Sepertinya itu tidak mungkinmatch
, kan? Untuk itu,re.search(pattern, my_string)
usahakan.^
di awal ketika Anda gunakanmatch
. Saya pikir ini sedikit lebih rumit daripada penjelasan yang sangat sederhana, tapi saya tidak jelas. Anda benar bahwa itu memang dimulai dari awal string.Satu-liner:
re.match(r"pattern", string) # No need to compile
Anda dapat mengevaluasi itu seolah-
bool
olah diperlukansumber
import re
sebagai baris pertamare.match
dalam konteks suatuif
, tetapi Anda harus menggunakannyabool
jika Anda menggunakannya di tempat lain?re.match
. Ini hanya cocok pada awal string. Lihatlahre.search
sebagai gantinya.if
memeriksa pertandingan tidak adaNone
.Silakan coba yang berikut ini:
sumber
sumber
ekspresi reguler membuat ini mudah ...
[A-Z]
akan sama persis dengan satu karakter antara A dan Z\d+
akan cocok dengan satu atau lebih digit()
hal-hal kelompok (dan juga mengembalikan barang-barang ... tetapi untuk sekarang pikirkan saja pengelompokan itu)+
memilih 1 atau lebihsumber
Saya percaya itu harus bekerja untuk huruf besar, pola angka .
sumber