Python Academy · Pelajaran

re.sub, Bendera dan Corak Terkompil

Gantikan teks, gunakan bendera seperti IGNORECASE dan kompil corak untuk digunakan semula.

Pelajaran 4 daripada 414 langkah

re.sub, Bendera dan Corak Terkompil ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Pengenalan

re.sub menggantikan padanan. Bendera mengubah tingkah laku pemadanan. Corak terkompil cekap untuk penggunaan berulang.

Asas re.sub

re.sub(pattern, repl, string) menggantikan semua padanan dengan repl. Argumen ke-4 count= mengehadkan penggantian.
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub dengan Kumpulan

Gunakan \1, \2 atau \g<1> dalam penggantian untuk memasukkan kumpulan yang ditangkap. Gunakan \g untuk kumpulan bernama.
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub dengan Fungsi

Penggantian boleh berupa callable: f(match) → rentetan penggantian. Ini membolehkan transformasi yang kompleks.
import re
def double_num(m): return str(int(m.group())*2)
result = re.sub(r'\d+', double_num, '1 cats and 2 dogs')
print(result)

re.IGNORECASE (re.I)

Menjadikan corak tidak peka huruf besar-kecil. r'hello' dengan re.I memadankan 'HELLO', 'Hello' dan sebagainya.
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

Menjadikan ^ dan $ memadankan permulaan/penghujung setiap LINE dan bukannya keseluruhan rentetan.
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

Menjadikan . turut memadankan baris baharu. Tanpanya, . berhenti pada sempadan baris.
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

Membenarkan komen dan ruang kosong dalam corak untuk kebolehbacaan. Ruang diabaikan; gunakan \ + ruang untuk ruang literal.
import re
pattern = re.compile(r'''
    (?P<year>\d{4})   # year
    -
    (?P<month>\d{2}) # month
    -
    (?P<day>\d{2})   # day
''', re.X)
print(pattern.search('2024-01-15').groupdict())

Menggabungkan Bendera

Gabungkan bendera dengan |: re.I | re.M. Atau gunakan bendera sebaris (?im) pada permulaan corak.
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile untuk Prestasi

Susun corak sekali dengan re.compile(). Panggil kaedah pada objek terkompil: pat.search(), pat.findall().
import re
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
emails = ['user@example.com', 'invalid', 'test@test.org']
print([e for e in emails if email_re.fullmatch(e)])

re.escape()

re.escape(string) melepaskan semua aksara regex khas dalam rentetan supaya rentetan itu boleh digunakan sebagai corak literal.
import re
user_input = 'price.is $10+'
pattern = re.compile(re.escape(user_input))
text = 'The price.is $10+ today'
print(bool(pattern.search(text)))

Semakan Pantas

Bendera manakah yang menjadikan . memadankan baris baharu dalam regex Python?

Ulang Kaji

re.sub: ganti dengan rentetan, kumpulan atau fungsi. Bendera: re.I (huruf besar-kecil), re.M (berbilang baris ^/$), re.S (titik memadankan \n), re.X (terperinci). Susun untuk penggunaan semula.

Teruskan

Syabas! Pelajaran seterusnya sedang menanti.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “re.sub, Bendera dan Corak Terkompil” percuma?

Ya — teks penuh “re.sub, Bendera dan Corak Terkompil” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “re.sub, Bendera dan Corak Terkompil”?

Gantikan teks, gunakan bendera seperti IGNORECASE dan kompil corak untuk digunakan semula. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “re.sub, Bendera dan Corak Terkompil” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Asas Ungkapan Nalar
  2. Menggunakan re.match, re.search, re.findall
  3. Kumpulan dan Tangkapan Bernama
  4. re.sub, Bendera dan Corak Terkompil
← Kembali ke Python Academy