Apa itu ungkapan yang benar? Ekspresi reguler adalah suatu kombinasi dari beberapa karakter tertentu yang telah didefinisikan sebelumnya, dan dari kombinasi karakter-karakter tertentu tersebut, yang membentuk sebuah string string aturan, yang digunakan untuk menyatakan sebuah logika filter pada string tersebut.
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Untuk memudahkan pembelajaran, saya sarankan untuk menggunakan Regextor, sebuah perangkat lunak untuk memvalidasi ekspresi reguler, dan artikel saya ini, yang juga merekomendasikan banyak perangkat lunak yang bagus untuk Mac.
Ekspresi reguler hanya dapat berisi teks biasa, yang berarti bahwa teks tersebut cocok dengan teks tersebut. Misalnya:
Ekspresi resmi:song
Xiaoosongge, xiao Songge (dalam bahasa Inggris).
Hasil pencocokan: xiaosong
ge,xiaoSongge
Ekspresi reguler secara default dibedakan dalam huruf besar dan huruf kecil, sehingga song tidak akan cocok dengan “Song”. Namun, sebagian besar implementasi ekspresi reguler menyediakan opsi untuk tidak membedakan huruf kecil dan huruf besar.
. digunakan untuk mencocokkan karakter acak, misalnya:
Ekspresi formal: c.t
Cat cet caaat dog (dalam bahasa Inggris).
Hasil pencocokan:cat
cet
caaat dog
Analisis: c.t akan cocok dengan string yang dimulai dengan “c” dan berakhir dengan “t” dengan karakter acak di tengahnya.
Demikian pula, beberapa karakter berurutan. dapat dicocokkan dengan beberapa karakter berurutan:
Ekspresi formal: c..t
Cat cet caat dog (dalam bahasa Inggris).
Hasil pencocokan: cat cet caat
dog
. dalam ekspresi reguler mengandung makna khusus, yaitu sebuah karakter khusus. .\ juga merupakan karakter khusus, yang dapat berperan sebagai translasi terhadap karakter khusus. Jika Anda ingin mencocokkan karakter “”. yang sebenarnya, Anda perlu menambahkan .\ di depan untuk melakukan translasi terhadap karakter tersebut..Untuk mengindikasikan karakter . . yang sebenarnya.
Ekspresi formal: c.t
Cat c.t dog (dalam bahasa Inggris).
Hasil pencocokan: catc.t
dog
Catatan: Karena \ adalah karakter khusus, maka untuk mencocokkan karakter \ yang sebenarnya, perlu menggunakan dua garis miring.\:
Ekspresi formal: c\t
Cat c\t dog (ditemukan pada tanggal 1 Maret 2013)
Hasil pencocokan: catc\t
dog
Seperti yang telah saya sebutkan di atas. saya bisa mencocokkan satu karakter saja, tapi bagaimana jika saya ingin mencocokkan beberapa karakter tertentu? mencocokkan satu set karakter tertentu bisa digunakan untuk mencocokkan satu karakter tertentu.[Dan [huruf pertama ].
Ekspresi formal: c[ab]t
Cat cbt cet
Hasil pencocokan:cat
cbt
cet
Analisis:[ab] akan cocok dengan “a” atau “b”. Jadi c[ab]t akan cocok dengan “cat” dan “cbt” dan tidak cocok dengan “cet”.
Dalam contoh di atas, jika saya ingin mencocokkan cet, di[Apakah ada satu lagi? Jadi jika saya ingin mencocokkan huruf kecil yang saya inginkan, apakah saya harus menuliskan puluhan huruf kecil di dalamnya?[a-z]:
Ekspresi formal: c[a-z]t
Cat cbt czt c2t
Hasil pencocokan:cat
cbt
czt
c2t
Analisis: c[a-z]t adalah huruf yang dimulai dengan “c”, diakhiri dengan “t”, dan di tengahnya adalah huruf “a” - “z” dari huruf “a” - “z”.
Di bawah ini adalah beberapa contoh:
[0-9] dan[0123456789] memiliki fungsi yang sama. Cocok dengan semua angka. [A-F] cocok dengan huruf besar A sampai F。 [A-Z] cocok dengan semua huruf besar dari A sampai Z. [a-z] cocok dengan semua huruf kecil dari a sampai z. [A-z] cocok untuk semua karakter dari ASCII A ke ASCII z, tidak hanya cocok untuk semua huruf, tetapi juga cocok untuk semua karakter dari A ke z dalam tabel ASCII, seperti[^ dan lain-lain). [A-Za-z0-9] Cocok dengan semua huruf dan angka dalam ukuran kecil.
Kumpulan karakter biasanya digunakan untuk menentukan sekelompok karakter yang perlu dicocokkan. Namun, kadang-kadang, Anda ingin mengecualikan sekelompok karakter yang tidak ingin dicocokkan. Hal ini dapat dicapai dengan penolakan terhadap kumpulan karakter.
Ekspresi formal: c[^a-z]t
Cat cbt czt c2t cAt
Hasil imbang: cat cbt czt c2t
cAt
Analisis: Ini adalah kebalikan dari contoh sebelumnya.[a-z] cocok dengan semua huruf kecil, sedangkan [^a-z] Mencocokkan semua karakter yang bukan huruf kecil.
Perhatikan, ^ karakter adalah untuk membatalkan semua karakter dalam set karakter.
Kata-kata meta memiliki arti khusus dalam ekspresi reguler, seperti yang telah kita sebutkan di atas.[dan] tidak dapat secara langsung menyatakan makna mereka sendiri, misalnya, tidak dapat secara langsung digunakan[Untuk mencocokkan”.[“Penggunaan. untuk mencocokkan”.
Semua karakter meta dapat ditambahkan di depan dengan terjemahan terbalik, dan setelah terjemahan, karakter akan cocok dengan dirinya sendiri dan bukan dengan makna khusus mereka.[Akan cocok.[ “:
Ekspresi formal:[b
Mencari teks yang cocok:[b ab a[[b
Hasil pencocokan:a[b
ab a[[b
Catatan:\ digunakan untuk transliterasi huruf kapital, yang berarti\ juga merupakan huruf kapital. Jadi jika perlu untuk mencocokkan “\” yang sebenarnya, dapat digunakan\:
Ekspresi formal:\b
Mencari teks yang cocok:\b a\b a[[b
Hasil setelah pencocokan: a\b a\b
a[[b
Kadang-kadang Anda mungkin perlu mencocokkan karakter kosong yang tidak dapat dicetak dalam teks. Misalnya, Anda ingin menemukan semua karakter Tab, atau semua tanda ganti. Anda dapat menggunakan karakter meta khusus dalam tabel berikut:
Sebagai contoh, \r\n akan mencocokkan sebuah back-and-forth kombinasi, yang dalam Windows mewakili sebuah file bergantian baris. Dalam sistem Linux dan Unix, hanya perlu menggunakan \n.
Ada beberapa karakter meta khusus yang dapat digunakan untuk mencocokkan kumpulan karakter yang umum digunakan. Karakter-karakter meta ini dikenal sebagai karakter kelas pencocokan. Anda akan menemukan mereka sangat mudah digunakan.
Mencocokkan angka atau bukan angka Seperti yang saya sebutkan di atas,[0-9] dapat mencocokkan semua angka. Jika tidak ingin mencocokkan angka apapun, dapat menggunakan[^0-9]。 Tabel di bawah ini mencantumkan huruf-huruf yang berupa angka dan non-angka:
Ekspresi Reguler: c\dt
Cat c2t czt c9t
Hasil pencocokan: catc2t
czt c9t
Ekspresi Reguler: c\Dt
Cat c2t czt c9t
Hasil pencocokan:cat
c2t czt
c9t
Mencocokkan karakter huruf dan non-huruf
Karakter meta kelas lain yang umum digunakan adalah \w dan \W:
Ekspresi formal: c\wt
Cat c2t czt c-t c\t
Hasil pencocokan:cat
c2t
c-t c\t
Ekspresi formal: c\Wt
Cat c2t c-t c\t
Hasil pencocokan: cat c2tc-t
c\t
Mencocokkan kosong dan tidak kosong
Kelas terakhir yang akan Anda temui adalah kelas kosong:
Ekspresi formal: c\st
Cat c t c2t c\t menunggu pencocokan
Hasil pencocokan: catc t
c2t c\t
Ekspresi formal: c\St
Cat c t c2t c\t menunggu pencocokan
Hasil pencocokan:cat
c t c2t
c\t
Karakter + yang dilambangkan dengan tanda + menandakan bahwa ada satu atau lebih karakter yang cocok. Misalnya, a akan cocok dengan “a”, sedangkan a+ cocok dengan satu atau lebih “a”.
Ekspresi formal: cat
Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ctcat
caat caaat
Ekspresi formal: ca+t
Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ctcat
caat
caaat
Ketika menggunakan + pada himpunan karakter, simbol + harus diletakkan di luar himpunan:
Ekspresi formal: c[0-9]+t
Ditunggu untuk dicocokkan teks: ct c0t cat c123t
Hasil pencocokan: ctc0t
cat c123t
Analisis: c[0-9]+t adalah string yang dimulai dengan “c” dan berakhir dengan “t” dengan satu atau lebih angka di tengahnya.
Tentu saja.[0-9+] juga merupakan ekspresi reguler yang sah, tetapi mewakili satu set karakter yang terdiri dari simbol “0” - “9” dan “+”.
Secara umum, karakter meta seperti . dan + digunakan sebagai makna literal ketika digunakan untuk kumpulan karakter, sehingga tidak perlu diterjemahkan.[0-9+] dan[0-9+Fungsinya sama.
Catatan: + adalah karakter meta, dan “+” harus diterjemahkan.+。
Jika Anda ingin mencocokkan nol atau lebih karakter, Anda dapat menggunakan*Karakter utama:
Ekspresi formal: ca*t
Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan:ct
cat
caat
cbt
Melihat:Simbol-simbolnya adalah karakter meta. Untuk dapat mencocokkan “”, perlu dilakukan transkripsi*。
? Cocok dengan angka nol atau satu karakter. Oleh karena itu, ? sangat cocok untuk cocok dengan karakter pilihan dalam teks.
Ekspresi: ca?t
Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan:ct
cat
caat cbt
Catatan: Simbol ? adalah huruf kapital. Untuk dapat mencocokkan ?, perlu dilakukan transkripsi.?。
Ekspresi reguler memungkinkan untuk menentukan berapa kali sebuah kecocokan akan terjadi. Jumlah kecocokan dapat ditentukan antara { dan } . Catatan: { dan } juga merupakan karakter awal, yang perlu diterjemahkan dalam arti harfiah.
Pencocokan yang tepat Untuk menentukan berapa kali yang akan dicocokkan, Anda bisa memasukkan angka di antara { dan }. Misalnya, {3} akan dicocokkan dengan karakter atau himpunan yang muncul 3 kali sebelumnya:
Ekspresi formal: ca{3}t
Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ct catcaaat
cbt
Minimal jumlah pencocokan
Kita juga bisa menentukan nilai minimal yang cocok. Misalnya, {2,} berarti cocok 2 kali atau lebih:
Ekspresi formal: ca{1,}t
Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ctcat
caaat
cbt
Pencocokan antara dimensi
Kita juga dapat menggunakan nilai minimum dan maksimum untuk menentukan jumlah yang cocok. Misalnya, {2,3} berarti minimal 2 kali dan maksimum 3 kali.
Ekspresi formal: ca{2,3}t
Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ct catcaaat
cbt
Jadi? dan fungsi dari {0,1} adalah sama dengan fungsi dari {1,}.
Perhatikan contoh berikut:
Ekspresi formal: s*g Xiao Song (dalam bahasa Inggris). Hasil imbang: xiao song xiao song Analisis: s.*g tidak mencocokkan dua “lagu” seperti yang diharapkan, melainkan mencocokkan semua teks antara “s” pertama dan “g” terakhir.
Ini karena*Dan + adalah kecocokan yang serakah. Artinya, ekspresi reguler selalu mencari kecocokan terbesar, bukan terkecil, yang dirancang dengan sengaja.
Tapi jika Anda tidak ingin ada pencocokan yang serakah, Anda harus menggunakan pencocokan yang tidak serakah dari kata-kata tersebut. Apakah kata-kata yang tidak serakah ditambahkan setelah kata-kata yang serakah?:
*Benarkah?*Versi non-greedy, jadi bisa digunakan*Untuk mengubah contoh di atas:
Ekspresi formal: s?g
Xiao Song (dalam bahasa Inggris).
Hasil pencocokan: xiaosong
xiao song
Analisis: Anda dapat melihat s.?g cocok dengan dua lagu.
Batas string yang cocok dengan meta adalah ^ dan $, yang digunakan untuk awal dan akhir string.
^ Terjemahan:
Ekspresi formal: ^ xiao
“Saya tidak tahu apa-apa tentang apa yang terjadi di sini.
Hasil pencocokan:xiao
song
Teks yang cocok untuk: axiaosong Hasil pencocokan: axiaosong Analisis: ^xiao cocok dengan string yang dimulai dengan “xiao”.
$ digunakan sebagai berikut:
Ekspresi resmi: song$
“Saya tidak tahu apa-apa tentang apa yang terjadi di sini.
Hasil pencocokan: xiaosong
Teks yang cocok untuk:xiaosonga Hasil imbang:xiaosonga Analisis: song$ cocok dengan string yang berakhir dengan “song”.
Penggunaan bersama:
Ekspresi formal: ^[0-9a-zA-Z]{4,}$
Teks yang akan dicocokkan: a1b234ABC
Hasil pencocokan:a1b234ABC
Teks yang akan dicocokkan: + a1b23 = 4ABC Hasil setelah pencocokan: + a1b23 = 4ABC Analisis:[0-9a-zA-Z]{4,}$ terdiri dari angka atau huruf yang cocok, dan digitnya lebih besar dari string yang sama dengan empat digit.
Catatan: ^ jika berada di awal himpunan, berarti negatif; jika berada di luar himpunan, akan mencocokkan posisi awal string.[^0-9] dan ^[Perbedaan 0-9]
Namun, Anda dapat mengaktifkan mode multi-baris. Dalam mode multi-baris, mesin ekspresi reguler akan menggunakan tanda ganti sebagai pemisah string, ^ untuk mencocokkan awal teks atau awal baris, dan $ untuk mencocokkan akhir teks atau akhir baris.
Modifikasi dari contoh sebelumnya:
Ekspresi formal:[0-9a-zA-Z]{4,}$
Teks yang akan dicocokkan: a1b234ABC +a1b23=4ABC ABC123456
Hasil pencocokan:a1b234ABC
+a1b23=4ABC
ABC123456
Analisis:[0-9a-zA-Z]{4,}$ akan mencocokkan setiap baris yang terdiri dari angka atau huruf, dan digitnya lebih besar dari string yang sama dengan empat digit.
Catatan: Jika menggunakan pola multi baris, maka tanda m harus ditempatkan di awal ekspresi reguler. (?m) tidak didukung dalam sebagian besar implementasi ekspresi reguler. Beberapa implementasi ekspresi reguler juga mendukung penggunaan awal string yang cocok dengan \A, dan akhir string yang cocok dengan \Z. Jika didukung, maka fungsi dari meta tersebut sama dengan ^, $. Namun, meta tersebut tidak dapat menggunakan modifikasi {{?m) dan tidak dapat digunakan dalam mode multi-baris.
Dikutip dari iOS_小松哥