Pelajari AI dengan Python · Pelajaran

Modul re: search, match, findall, sub

re.search(), re.match(), re.findall(), re.sub(), re.compile() untuk prestasi.

Pelajaran 2 daripada 413 langkah

Modul re: search, match, findall, sub ialah pelajaran Pelajari AI dengan Python percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pelajari AI dengan Python, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.

Modul re

Python menyediakan regex melalui modul terbina dalam re. Fungsi terasnya ialah search, match, findall dan sub.

Mengetahui fungsi yang sesuai digunakan ialah separuh daripada usaha.

import re   # always import it first

re.search — Cari di Mana-mana

re.search(pattern, text) mengimbas seluruh rentetan untuk mencari padanan pertama dan mengembalikan objek Match, atau None jika tiada padanan.

import re

m = re.search("\d+", "order 42 shipped")
if m:
    print(m.group())   # "42"
    print(m.start())   # 6

re.match — Berpaut pada Permulaan

re.match hanya sepadan pada permulaan rentetan. Jika corak tidak berada pada kedudukan 0, fungsi ini mengembalikan None walaupun corak itu muncul kemudian.

import re

print(re.match("\d+", "42 items"))    # matches "42"
print(re.match("\d+", "items 42"))    # None

search berbanding match

Perbezaan utamanya:

  • match — corak mesti bermula pada indeks 0
  • search — corak boleh muncul di mana-mana

Kebanyakan masa, anda memerlukan search. Gunakan match hanya apabila anda benar-benar perlu menyemak awalan.

re.findall — Dapatkan Setiap Padanan

re.findall mengembalikan senarai semua padanan yang tidak bertindih sebagai rentetan (bukan objek Match). Fungsi ini sesuai untuk tugasan pengekstrakan.

import re

emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails)   # ["a@x.com", "b@y.org"]

findall dengan Kumpulan

Jika corak anda mempunyai kumpulan tangkapan, findall mengembalikan bahagian yang ditangkap dan bukannya keseluruhan padanan — sesuatu yang sering mengejutkan.

Di sini setiap tupel menyimpan kod kawasan dan bakinya.

import re

print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]

re.finditer — Objek Padanan

Apabila anda memerlukan kedudukan atau kumpulan bagi setiap padanan, gunakan re.finditer. Fungsi ini menghasilkan objek Match yang boleh anda lelar secara malas.

import re

for m in re.finditer("\d+", "a1 b22 c333"):
    print(m.group(), "at", m.start())

re.sub — Cari dan Ganti

re.sub(pattern, replacement, text) menggantikan setiap padanan dengan rentetan pengganti dan mengembalikan rentetan baharu.

Asas penting untuk pembersihan teks — menyamarkan, menyeragamkan dan menanggalkan.

import re

clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean)   # "Room # and #"

sub dengan Rujukan Balik dan Fungsi

Pengganti boleh merujuk kumpulan yang ditangkap dengan \1, atau berupa fungsi untuk logik dinamik.

import re

# Swap "first last" -> "last, first"
print(re.sub("(\w+) (\w+)", "\\2, \\1", "Ada Lovelace"))

# Function replacement: double each number
print(re.sub("\d+", lambda m: str(int(m.group()) * 2), "a1 b2"))

re.compile — Guna Semula Corak

Apabila anda menggunakan sesuatu corak berkali-kali (contohnya dalam gelung), re.compile membinanya sekali menjadi objek corak yang boleh digunakan semula. Cara ini lebih pantas dan kodnya mudah dibaca.

import re

num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
    print(num.findall(line))

Bendera Berguna

Bendera mengubah tingkah laku pemadanan:

  • re.IGNORECASE — tidak peka huruf besar kecil
  • re.MULTILINE — ^/$ sepadan dengan setiap baris
  • re.DOTALL — . turut sepadan dengan baris baharu
import re

print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]

Semakan Pantas: search berbanding findall

Anda memerlukan senarai setiap nombor telefon yang muncul di mana-mana dalam dokumen.

Imbas Kembali: Modul re

Sekarang anda mengetahui fungsi teras regex:

  • re.search — padanan pertama di mana-mana (objek Match)
  • re.match — padanan hanya pada permulaan
  • re.findall — senarai semua padanan (kumpulan mengubah output)
  • re.finditer — objek Match dengan kedudukan
  • re.sub — menggantikan padanan, dengan rujukan balik atau fungsi
  • re.compile dan bendera untuk penggunaan semula serta kawalan

Seterusnya: kumpulan tangkapan dan kumpulan bernama.

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
53
Pelajaran
225

Soalan Lazim

Adakah pelajaran “Modul re: search, match, findall, sub” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pelajari AI dengan Python, termasuk “Modul re: search, match, findall, sub”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Modul re: search, match, findall, sub”?

re.search(), re.match(), re.findall(), re.sub(), re.compile() untuk prestasi. Anda berlatih Pelajari AI dengan Python 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 Pelajari AI dengan Python?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pelajari AI dengan Python 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 2 daripada 4.

Berapa lamakah pelajaran “Modul re: search, match, findall, sub” 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 Pelajari AI dengan Python ini?

Ya. Setiap pelajaran Pelajari AI dengan Python 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. Corak Regex dan Kelas Aksara
  2. Modul re: search, match, findall, sub
  3. Kumpulan Tangkapan dan Kumpulan Bernama
  4. Pembersihan Teks untuk Kecerdasan Buatan dengan Regex
← Kembali ke Pelajari AI dengan Python