Apakah ungkapan yang betul? Ungkapan biasa adalah menggunakan beberapa aksara tertentu yang ditakrifkan terlebih dahulu, dan kombinasi aksara tertentu ini, untuk membentuk satu senar senar peraturan, yang digunakan untuk menyatakan logik penapisan pada senar tersebut.
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Untuk memudahkan anda belajar, saya cadangkan Regextor, perisian yang mengesahkan ungkapan biasa, seperti yang anda boleh lihat dalam artikel saya, di mana saya juga cadangkan banyak perisian yang baik untuk Mac.

Ungkapan biasa boleh mengandungi teks biasa sahaja, yang mewakili untuk sepadan dengan tepat dengan teks tersebut. Contohnya:
Ekspresi rasmi:song
Xiaoosongge, xiao Songge
Hasil perlawanan: xiaosongge,xiaoSongge
Ekspresi formal secara default adalah huruf kecil, jadi song tidak akan sepadan dengan “Song”. Tetapi kebanyakan pelaksanaan ekspresi formal menyediakan pilihan untuk tidak membezakan huruf kecil.
. Digunakan untuk memadankan aksara rawak, seperti:
Ungkapan rasmi: c.t
Cat cet caaat dog
Hasil pertandingan:cat cet caaat dog
Analisis: c.t akan sepadan dengan senar yang bermula dengan “c”, berakhir dengan “t”, dan di tengah-tengahnya ialah aksara rawak.
Begitu juga, pelbagai berturut-turut. boleh dipadankan dengan beberapa aksara rawak berturut-turut:
ungkapan rasmi: c..t
Cat cet caat dog (dalam bahasa Inggeris)
Hasil perlawanan: cat cet caat dog
. dalam ungkapan biasa yang mengandungi makna khas, adalah watak khas. .\ juga watak khas, yang boleh berfungsi sebagai terjemahan untuk watak khas. . Jika anda ingin mencocokkan adalah watak “”. yang sebenar, anda perlu..Tanda “ . ” yang sebenar ialah .
Ungkapan rasmi: c.t
Cat c.t dog
Hasil perlawanan: catc.t dog
Nota: Oleh kerana \ juga merupakan aksara istimewa, anda perlu menggunakan dua garis miring untuk menandakan aksara \ yang sebenar\:
Ungkapan rasmi: c\t
Menunggu untuk disesuaikan Teks: cat c\t dog
Hasil perlawanan: catc\t dog
Ia boleh digunakan untuk mencocokkan satu aksara, tetapi bagaimana jika saya ingin mencocokkan beberapa aksara tertentu?[dan [huruf pertama ].
Ungkapan rasmi: c[ab]t
Cat cbt cet
Hasil pertandingan:cat cbt cet
Analisis:[ab] akan sepadan dengan “a” atau “b”. Jadi c[ab]t akan sepadan dengan “cat” dan “cbt” dan tidak sepadan dengan “cet” 。
Dalam contoh di atas, jika saya mahu memadankan cet,[Adakah terdapat satu tambahan? Jika saya mahu menyamai huruf kecil, saya akan menulis puluhan huruf dalam kotak ini.[a-z]:
Ungkapan rasmi: c[a-z]t
Cat cbt czt c2t
Hasil pertandingan:cat cbt czt c2t
Analisis: c[a-z]t menandakan huruf yang bermula dengan “c” dan berakhir dengan “t”, dan di tengahnya ialah huruf “a” - “z” yang dipilih.
Antara yang lain seperti:
[0-9] dan[0123456789] mempunyai fungsi yang sama. [A-F] sepadan dengan huruf besar A hingga F. [A-Z] sepadan dengan semua huruf besar A hingga Z. [a-z] sepadan dengan semua huruf kecil dari a hingga z. [A-z] mencocokkan semua aksara dari ASCII A ke ASCII z (tidak hanya mencocokkan semua huruf, tetapi juga aksara dalam jadual ASCII A ke z, seperti[^ dan lain-lain) [[A-Za-z0-9] Mencocokkan semua huruf dan nombor kecil.
Kumpulan aksara biasanya digunakan untuk menentukan sekumpulan aksara yang perlu dipadankan. Tetapi kadang-kadang, anda ingin mengecualikan sekumpulan aksara yang anda tidak mahu dipadankan. Anda boleh melakukannya dengan menolak kumpulan aksara.
Ungkapan rasmi: c[^a-z]t
Cat cbt czt c2t cAt
Hasil perlawanan: cat cbt czt c2t cAt
Analisis: Ini bertentangan dengan contoh sebelumnya.[[a-z] sesuai dengan semua huruf kecil, sedangkan [^a-z] Mencocokkan semua aksara yang bukan huruf kecil.
Perhatikan, ^ watak adalah membatalkan semua watak dalam set watak.
Nombor meta mempunyai makna khusus dalam ungkapan biasa, seperti yang telah kita sebutkan di atas.[Dan] tidak boleh digunakan untuk menyatakan makna mereka secara langsung, contohnya, tidak boleh digunakan secara langsung[“Semuanya sesuai”.[“Dengan menggunakan. untuk bersesuaian”.
Semua aksara meta boleh ditambahkan terjemahan garis miring di hadapan, dan apabila terjemahan, aksara akan sepadan dengan dirinya sendiri dan bukan dengan makna khasnya.[“Selain itu,[ “:
Ungkapan biasa: a[b
Teks untuk dipadankan: a[b ab a[[b
Hasil pertandingan:a[b ab a[[b
Nota:\ digunakan untuk menterjemahkan huruf pertama, yang juga bermakna\ juga merupakan huruf pertama. Oleh itu, jika perlu untuk memadankan “\” yang sebenar, ia boleh digunakan.\:
Ungkapan biasa: a\b
Teks untuk dipadankan: a\b a\b a[[b
Hasil selepas sepadan: a\b a\b a[[b
Kadang-kadang anda mungkin perlu memadankan huruf kosong yang tidak boleh dicetak dalam teks. Sebagai contoh, anda ingin mencari semua huruf Tab, atau semua tanda ganti baris. Anda boleh menggunakan huruf meta khas dalam jadual berikut:

Sebagai contoh, \r\n akan memadankan satu set pertukaran balik, yang mewakili pertukaran fail dalam Windows. Dalam sistem Linux dan Unix, hanya perlu menggunakan \n.
Terdapat beberapa meta-karakter khas yang boleh digunakan untuk mencocokkan kumpulan aksara yang biasa digunakan. Meta-karakter ini dikenali sebagai kelas aksara pencocokan. Anda akan mendapati ia mudah digunakan.
Nombor yang sepadan atau tidak Saya tidak tahu apa-apa tentang apa yang berlaku.[0-9] boleh disesuaikan dengan semua nombor. Jika anda tidak mahu disesuaikan dengan mana-mana nombor, anda boleh menggunakan[^0-9]。 Jadual di bawah menyenaraikan huruf-huruf bertaraf digital dan bukan digital:

Ungkapan biasa: c\dt
Cat c2t czt c9t
Hasil perlawanan: catc2t czt c9t
Ungkapan rasmi: c\Dt
Cat c2t czt c9t
Hasil pertandingan:cat c2t czt c9t
Mencocokkan aksara huruf dan aksara bukan huruf
Satu lagi aksara meta yang biasa digunakan ialah \w dan \W:

Ungkapan rasmi: c\wt
Cat c2t czt c-t c\t
Hasil pertandingan:cat c2t c-t c\t
Ungkapan rasmi: c\Wt
Cat c2t c-t c\t
Hasil perlawanan: cat c2tc-t c\t
Mencocokkan kosong dan tidak kosong
Kelas terakhir yang akan anda jumpai ialah kelas kosong:

Ungkapan rasmi: c\st
Cat c t c2t c\t Ditunggu untuk dipadankan
Hasil perlawanan: catc t c2t c\t
Ungkapan rasmi: c\St
Cat c t c2t c\t Ditunggu untuk dipadankan
Hasil pertandingan:cat c t c2t c\t
Karakter + menunjukkan padanan satu atau lebih aksara. Sebagai contoh, a akan padanan “a”, dan a+ padanan satu atau lebih “a”.
ungkapan rasmi: cat
Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ctcat caat caaat
Ungkapan rasmi: ca+t
Cat Cat Cat Cat Cat Cat Cat
Hasil pencocokan: ctcat caat caaat
Apabila + digunakan pada set aksara, tanda + perlu diletakkan di luar set:
Ungkapan rasmi: c[0-9]+t
Ditunggu untuk disesuaikan Teks: ct c0t cat c123t
Hasil pencocokan: ctc0t cat c123t
Analisis: c[0-9]+t menandakan string yang bermula dengan “c” dan berakhir dengan “t” dengan satu atau lebih nombor di tengahnya.
Sudah tentu.[0-9+] juga merupakan ungkapan sah, tetapi ia menunjukkan satu set aksara yang mengandungi simbol “0” - “9” dan “+”.
Secara amnya, meta seperti . dan + digunakan untuk kumpulan aksara yang digunakan sebagai makna harfiah, oleh itu tidak perlu menterjemahkannya.[0-9+] dan[0-9+Fungsinya sama.
Nota: + adalah huruf meta, dan “+” perlu diterjemahkan+。
Jika anda ingin mencocokkan sifar atau lebih, anda boleh menggunakan*Huruf pertama:
Ungkapan rasmi: ca*t
Ct cat caat cbt
Hasil pertandingan:ct cat caat cbt
Notis:*Simbol adalah huruf pertama. Untuk dapat memadankan “ * “, perlu dilakukan pentafsiran*。
? Mencocokkan sifar atau satu aksara. Oleh itu, ? sangat sesuai untuk mencocokkan aksara pilihan dalam teks.
ungkapan rasmi: ca?t
Ct cat caat cbt
Hasil pertandingan:ct cat caat cbt
Nota: Simbol ? adalah huruf pertama. Untuk dapat memadankan ” ? “, perlu dilakukan pengalihan.?。
Ekspresi rasmi membenarkan untuk menentukan berapa kali pertandingan akan diadakan. Jumlah kali pertandingan boleh ditentukan antara { dan } . Nota: { dan } juga merupakan aksara pertama dan perlu diterjemahkan apabila digunakan secara harfiah.
Pencocokan yang tepat Untuk menentukan berapa kali ia akan dipadankan, anda boleh memasukkan nombor di antara { dan }. Sebagai contoh, {3} akan dipadankan dengan 3 kali set atau watak yang muncul sebelum:
Ungkapan rasmi: 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 Cat
Hasil perlawanan: ct cat caaat cbt
Minimum nombor yang sepadan
Kita juga boleh menetapkan nilai minimum yang sesuai. Sebagai contoh, {2,} bermaksud sesuai 2 kali atau lebih:
Ungkapan rasmi: 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 Cat
Hasil pencocokan: ctcat caaat cbt
Pencocokan antara dimensi
Kita juga boleh menggunakan nilai minimum dan maksimum untuk menentukan bilangan padanan. Sebagai contoh, {2,3} bermakna minimum 2 dan maksimum 3 padanan.
Ungkapan rasmi: 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 Cat
Hasil perlawanan: ct cat caaat cbt
Jadi? dan fungsi dari {0,1} adalah sama dengan + dan fungsi dari {1,} ialah sama dengan
Lihat contoh berikut:
Ekspresi rasmi: s.*g Xiao Song Xiao Song (dalam bahasa Inggeris) Hasil perlawanan: xiao song xiao song Analisis: s.*g tidak memadankan dua “lagu” seperti yang diharapkan, tetapi memadankan semua teks antara “s” pertama dan “g” terakhir.
Ini kerana*Dan + adalah kecocokan yang tamak. Iaitu, ungkapan biasa sentiasa mencari kecocokan terbesar, dan bukan terkecil, yang dirancang dengan sengaja.
Tetapi jika anda tidak mahu menggunakan perkataan yang serba serbi, gunakan perkataan yang serba serbi dari kata-kata tersebut. Kata serba serbi ditambah selepas perkataan yang serba serbi:

*Ya?*Ia adalah versi yang tidak tamak, jadi ia boleh digunakan.*Untuk mengubah contoh di atas:
Ekspresi rasmi: s.?g
Xiao Song Xiao Song (dalam bahasa Inggeris)
Hasil perlawanan: xiaosong xiao song
Analisis: anda boleh lihat s.?g telah dipadankan dengan dua lagu.
Border string yang sesuai dengan meta ialah ^ dan $, yang digunakan untuk permulaan dan pengakhiran string.
^ Terjemahan:
Ekspresi formal: ^ xiao
Teks yang disesuaikan: xiaoosong
Hasil pertandingan:xiaosong
Teks yang disesuaikan: axiaosong Hasil perlawanan: axiaosong Analisis: ^xiao sepadan dengan senar yang bermula dengan “xiao”.
$ digunakan sebagai berikut:
Ekspresi rasmi: song$
Teks yang disesuaikan: xiaoosong
Hasil perlawanan: xiaosong
Teks yang disesuaikan: xiaoosonga Hasil perlawanan:xiaosonga Analisis: song$ bersesuaian dengan senar yang berakhir dengan “song”
Penggunaan bersama:
Ekspresi biasa: ^[0-9a-zA-Z]{4,}$
Teks untuk dipadankan: a1b234ABC
Hasil pertandingan:a1b234ABC
Teks untuk dipadankan: + a1b23 = 4ABC Hasil selepas sepadan: + a1b23=4ABC Analisis: ^[0-9a-zA-Z]{4,}$ bertanding dengan nombor atau huruf, dan digitnya lebih besar daripada string yang sama dengan empat digit.
Nota: ^ jika terletak di permulaan set, bermakna negatif; jika di luar set, akan sepadan dengan kedudukan permulaan string.[^0-9] dan ^[Perbezaan 0-9]
Tetapi {{?m}} boleh digunakan dalam mod berbilang baris. Dalam mod berbilang baris, enjin ungkapan biasa menggunakan tanda ganti baris sebagai pemisah bagi senar, ^ untuk menandakan permulaan teks atau permulaan baris, dan $ untuk menandakan akhir teks atau akhir baris.
Untuk membetulkan contoh sebelumnya:
Ekspresi biasa:[0-9a-zA-Z]{4,}$
Teks untuk dipadankan: a1b234ABC +a1b23=4ABC ABC123456
Hasil pertandingan:a1b234ABC
+a1b23=4ABC
ABC123456
Analisis:[0-9a-zA-Z]{4,}$ akan memadankan setiap baris dengan nombor atau huruf, dan digitnya lebih besar daripada empat digit.
Nota: Jika digunakan dalam mod berbilang baris, ((?m) mesti diletakkan pada permulaan ungkapan biasa. (?m) tidak disokong dalam kebanyakan pelaksanaan ungkapan biasa. Beberapa pelaksanaan ungkapan biasa juga menyokong penggunaan permulaan \A untuk mencocokkan rentetan, dan penghujung \Z untuk mencocokkan rentetan. Jika disokong, maka fungsi meta ini adalah sama seperti ^, $. Tetapi meta ini tidak boleh menggunakan pengubahsuaian ((?m), dan oleh itu tidak boleh digunakan dalam mod berbilang baris.
Dipetik dari Buku ringkas iOS_小松哥