Re.Search (corak, rentetan, bendera = 0):
Fungsi re.search()
mengimbas melalui rentetan mencari lokasi pertama di mana corak ekspresi biasa menghasilkan perlawanan, dan mengembalikan objek perlawanan. Jika tiada kedudukan dalam rentetan sepadan dengan corak, re.search()
mengembalikan None
.
Contoh:
<code class="python">import re text = "The quick brown fox jumps over the lazy dog." pattern = r"quick" match = re.search(pattern, text) if match: print("Match found at index:", match.start()) else: print("No match found.")</code>
Re.match (corak, rentetan, bendera = 0):
Fungsi re.match()
cuba untuk memadankan corak pada permulaan rentetan. Jika corak dijumpai pada permulaan rentetan, re.match()
mengembalikan objek perlawanan. Jika tidak, ia None
akan kembali.
Contoh:
<code class="python">import re text = "The quick brown fox jumps over the lazy dog." pattern = r"The" match = re.match(pattern, text) if match: print("Match found at the start of the string.") else: print("No match found at the start of the string.")</code>
Re.Findall (corak, rentetan, bendera = 0):
Fungsi re.findall()
mengembalikan semua perlawanan tidak bertindih corak dalam rentetan sebagai senarai rentetan. Jika corak termasuk kumpulan menangkap, senarai yang dikembalikan mengandungi tupel dengan kumpulan yang ditangkap.
Contoh:
<code class="python">import re text = "The quick brown fox jumps over the lazy dog." pattern = r"\b\w{5}\b" matches = re.findall(pattern, text) print("All matches:", matches)</code>
Untuk mencari semua kejadian corak dalam rentetan, anda harus menggunakan fungsi re.findall()
. Fungsi ini mengembalikan senarai semua perlawanan tidak bertindih corak dalam rentetan. Ia adalah pilihan yang paling sesuai apabila anda perlu mengumpul pelbagai contoh corak dan bukan hanya mencari kejadian pertama atau memeriksa perlawanan pada permulaan rentetan.
Contoh:
<code class="python">import re text = "The quick brown fox jumps over the lazy dog." pattern = r"\b\w{5}\b" matches = re.findall(pattern, text) print("All matches:", matches)</code>
Untuk mengoptimumkan penggunaan re.search()
, re.match()
, dan re.findall()
untuk prestasi yang lebih baik, pertimbangkan strategi berikut:
Menyusun Ekspresi Biasa : Jika anda menggunakan ungkapan biasa yang sama beberapa kali, menyusunnya sekali dan menggunakannya semula. Menyusun ungkapan biasa yang mengubahnya menjadi format dalaman yang lebih efisien.
Contoh:
<code class="python">import re pattern = re.compile(r"\b\w{5}\b") text = "The quick brown fox jumps over the lazy dog." match = pattern.search(text) all_matches = pattern.findall(text)</code>
Gunakan bendera yang sesuai : Gunakan bendera seperti re.IGNORECASE
untuk membuat regex anda kes-insensitif jika diperlukan, yang dapat memudahkan corak anda dan meningkatkan kebolehbacaan dan prestasi.
Contoh:
<code class="python">import re text = "The Quick Brown Fox Jumps Over The Lazy Dog." pattern = re.compile(r"\b\w{5}\b", re.IGNORECASE) all_matches = pattern.findall(text) print("All matches:", all_matches)</code>
Kurangkan backtracking : Tulis corak regex yang cekap yang meminimumkan backtracking. Kuantum tamak boleh menyebabkan mundur yang berlebihan, jadi gunakan kuantifi bukan keburukan ( *?
, ?
, ??
) apabila sesuai.
Contoh:
<code class="python">import re text = "<tag>content</tag>" pattern_greedy = r"<.>" pattern_non_greedy = r"<.>" match_greedy = re.search(pattern_greedy, text) match_non_greedy = re.search(pattern_non_greedy, text) print("Greedy match:", match_greedy.group()) print("Non-greedy match:", match_non_greedy.group())</.></.></code>
re.findall()
untuk pelbagai perlawanan : Apabila anda perlu mencari semua kejadian corak, gunakan re.findall()
dan bukannya gelung dengan re.search()
untuk mengelakkan lelaran yang tidak perlu.re.match()
jika anda hanya perlu menyemak permulaan rentetan, kerana ia boleh menjadi lebih cekap daripada re.search()
untuk kes khusus ini.Dengan menggunakan teknik pengoptimuman ini, anda dapat meningkatkan prestasi operasi ekspresi biasa anda di Python.
Atas ialah kandungan terperinci Bagaimana anda menggunakan re.search (), re.match (), dan re.findall () fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!