JavaRush /Blog Java /Random-MS /RegEx: 20 langkah pendek untuk menguasai ungkapan biasa. ...
Artur
Tahap
Tallinn

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa. Bahagian 1

Diterbitkan dalam kumpulan
Asal artikel ini ada di sini . Mungkin tidak ada teori yang terlalu banyak, dan saya akan menyediakan beberapa pautan ke bahan yang lebih terperinci tentang regex pada akhir artikel. Tetapi nampaknya saya mula menyelidiki topik seperti ungkapan biasa akan menjadi lebih menarik jika ada peluang untuk bukan sahaja menjejalkan, tetapi juga segera menyatukan pengetahuan dengan menyelesaikan tugas-tugas kecil di sepanjang jalan. RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 1Mari kita mulakan. Biasanya penentang menggunakan ungkapan biasa ('RegEx' atau ringkasnya 'regex') dalam pengaturcaraan memetik petikan berikut, dikaitkan dengan Jamie Zawinski: "Sesetengah orang, apabila menghadapi masalah, berfikir, 'Saya tahu, saya akan menggunakan ungkapan biasa .'" Sekarang mereka mempunyai dua Masalah". Sebenarnya, menggunakan ungkapan biasa bukanlah idea yang baik atau buruk. Dan ini dengan sendirinya tidak akan menambah masalah dan tidak akan menyelesaikan mana-mana daripada mereka. Ia hanya alat. Dan cara anda menggunakannya (betul atau salah) menentukan hasil yang anda akan lihat. Jika anda cuba menggunakan regex, sebagai contoh, untuk membuat penghurai HTML, kemungkinan besar anda akan mengalami kesakitan . Tetapi jika anda hanya mahu mengekstrak, sebagai contoh, cap masa daripada beberapa baris, anda mungkin baik-baik saja. Untuk memudahkan anda menguasai ungkapan biasa, saya telah mengumpulkan pelajaran ini yang akan membantu anda menguasai ungkapan biasa dari awal hanya dalam dua puluh langkah singkat. Tutorial ini tertumpu terutamanya pada konsep asas ungkapan biasa dan menyelidiki topik yang lebih maju hanya jika perlu.

Langkah 1: Mengapa menggunakan ungkapan biasa

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 2Ungkapan biasa digunakan untuk mencari padanan dalam teks menggunakan corak (corak) yang ditentukan. Menggunakan regex, kita boleh dengan mudah dan ringkas mengeluarkan perkataan daripada teks, serta aksara literal dan meta individu serta urutannya yang memenuhi kriteria tertentu. Inilah yang Wikipedia beritahu kita tentang mereka : Ungkapan biasa ialah bahasa formal untuk mencari dan memanipulasi subrentetan dalam teks, berdasarkan penggunaan metacharacters (aksara wildcard). Untuk carian, rentetan sampel (corak Inggeris, dalam bahasa Rusia ia sering dipanggil "template", "topeng") digunakan, yang terdiri daripada simbol dan metasimbol dan mentakrifkan peraturan carian. Untuk memanipulasi teks, rentetan gantian juga ditentukan, yang juga boleh mengandungi aksara khas. Coraknya boleh semudah perkataan dogdalam ayat ini:
Musang coklat yang cepat melompat ke atas anjing malas itu.
Ungkapan biasa ini kelihatan seperti ini:
anjing
... Cukup mudah, bukan? Corak juga boleh menjadi mana-mana perkataan yang mengandungi huruf o. Ungkapan biasa untuk mencari corak sedemikian mungkin kelihatan seperti ini:
\w * o\w *
( Anda boleh mencuba ungkapan biasa ini di sini .) Anda akan melihat bahawa apabila keperluan "padanan" menjadi lebih kompleks, ungkapan biasa juga menjadi lebih kompleks. Terdapat bentuk tambahan tatatanda untuk menentukan kumpulan aksara dan memadankan corak berulang, yang akan saya terangkan di bawah. Tetapi, sebaik sahaja kita menemui padanan dengan corak dalam beberapa teks, maka apa yang boleh kita lakukan dengannya? Enjin ungkapan biasa moden membolehkan anda mengekstrak aksara atau jujukan aksara (subrentetan) daripada teks yang terkandung, atau mengalih keluarnya, atau menggantikannya dengan teks lain. Secara umum, ungkapan biasa digunakan untuk menghuraikan dan memanipulasi teks. Kita boleh mengekstrak, sebagai contoh, subrentetan yang kelihatan seperti alamat IP dan kemudian cuba mengesahkannya. Atau kita boleh mengekstrak nama dan alamat e-mel dan menyimpannya dalam pangkalan data. Atau gunakan ungkapan biasa untuk mencari maklumat sensitif (seperti nombor pasport atau nombor telefon) dalam e-mel dan maklumkan pengguna bahawa mereka mungkin meletakkan diri mereka dalam risiko. Regex benar-benar alat serba boleh yang mudah dipelajari tetapi sukar untuk dikuasai: "Sama seperti terdapat perbezaan antara memainkan sekeping muzik dengan baik dan mencipta muzik, terdapat perbezaan antara mengetahui ungkapan biasa dan memahaminya." - Jeffrey E. F. Friedl, Menguasai Ungkapan Biasa

Langkah 2: Kurungan Segiempat[]

Ungkapan biasa paling ringkas yang mudah difahami ialah ungkapan yang hanya mencari padanan aksara demi aksara antara corak ungkapan biasa dan rentetan sasaran. Mari, sebagai contoh, cuba cari kucing: RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 3
corak: kucing
tali: Kucing itu dipotong apabila ia berlari di bawah kereta.
perlawanan:      ^^^
( Bagaimana ia berfungsi dalam amalan - lihat di sini ) NB! Semua penyelesaian dibentangkan di sini sebagai penyelesaian yang mungkin sahaja. Dalam ungkapan biasa, seperti dalam pengaturcaraan secara umum, anda boleh menyelesaikan masalah yang sama dengan cara yang berbeza. Walau bagaimanapun, sebagai tambahan kepada perbandingan watak demi watak yang ketat, kami juga boleh menentukan padanan alternatif menggunakan kurungan segi empat sama:
corak: kereta[rt]
tali: Kucing itu dipotong apabila ia berlari di bawah kereta.
perlawanan:      ^^^ ^^^
( Cara ia berfungsi ) Tanda kurung segi empat buka dan tutup memberitahu enjin ungkapan biasa bahawa ia harus sepadan dengan mana-mana aksara yang ditentukan, tetapi hanya satu. Ungkapan biasa di atas tidak akan menemui, sebagai contoh, cartkeseluruhan perkataan, tetapi hanya akan menemui sebahagian daripadanya:
corak: kereta[rt]
tali: Kucing itu dipotong apabila ia berlari di bawah kereta.
perlawanan:      ^^ ^^^
( Cara ia berfungsi ) Apabila anda menggunakan kurungan segi empat sama, anda memberitahu enjin ungkapan biasa untuk memadankan hanya satu aksara yang terkandung dalam kurungan. Enjin mencari watak c, kemudian watak a, tetapi jika watak seterusnya bukan ratau t, maka ini bukan padanan yang lengkap. Jika ia menemui ca, dan kemudian sama ada r, atau t, ia berhenti. Ia tidak akan cuba memadankan lebih banyak aksara kerana kurungan segi empat sama menunjukkan bahawa hanya satu daripada aksara yang terkandung perlu dipadankan. Apabila ia menjumpai ca, ia mencari rdalam perkataan seterusnya cart, dan berhenti kerana ia telah menemui padanan untuk urutan tersebut car.

Objektif latihan:

Tulis ungkapan biasa yang sepadan dengan semua 10 pola haddalam Hadpetikan kata-kata yang tidak boleh diterjemahkan dalam dialek tempatan ini:
corak:
rentetan: Jim, di mana Bill telah "mempunyai" , telah mempunyai "mempunyai" . "Telah" adalah betul.
perlawanan:                  ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^
( Lihat penyelesaian yang mungkin di sini ) Bagaimana dengan semua nama haiwan dalam ayat berikut?
corak:
rentetan: Kelawar, kucing dan tikus masuk ke bar...
perlawanan:    ^^^ ^^^ ^^^
( Penyelesaian yang mungkin ) Atau lebih mudah lagi: cari perkataan baratau bat:
corak:
rentetan: Kelawar, kucing dan tikus masuk ke bar...
perlawanan:    ^^ ^^^
( Penyelesaian yang mungkin ) Sekarang kita telah pun belajar cara menulis ungkapan biasa yang lebih atau kurang kompleks, dan kita hanya pada langkah 2! Jom sambung!

Langkah 3: Urutan Melarikan Diri

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 4Dalam langkah sebelumnya, kami mempelajari tentang kurungan segi empat sama []dan cara ia membantu kami mencari padanan alternatif menggunakan enjin regex. Tetapi bagaimana jika kita ingin mencari padanan dalam bentuk kurungan persegi terbuka dan tertutup itu sendiri []? Apabila kami ingin mencari padanan aksara demi aksara perkataan cat, kami menyediakan enjin regex dengan jujukan aksara ini ( cat). Mari cuba mencari kurungan segi empat sama []dengan cara yang sama:
corak: [] 
rentetan: Anda tidak boleh memadankan [] menggunakan regex! Anda akan menyesali ini!
perlawanan: 
( Mari lihat apa yang berlaku ) Sesuatu tidak berjaya, walau bagaimanapun... Ini kerana aksara kurungan segi empat sama bertindak sebagai aksara enjin regex khas yang biasanya digunakan untuk menunjukkan sesuatu yang lain, dan bukan corak literal untuk memadankannya sendiri. Seperti yang kita ingat dari langkah 2, ia digunakan untuk mencari padanan alternatif supaya enjin regex boleh memadankan mana-mana aksara yang terkandung di antara mereka. Jika anda tidak meletakkan sebarang aksara di antara mereka, ia boleh menyebabkan ralat. Untuk memadankan watak istimewa ini, kita mesti melarikan diri dengan mendahuluinya dengan aksara sengkang ke belakang \. Backslash (atau backslash) ialah satu lagi watak istimewa yang memberitahu enjin regex untuk mencari aksara seterusnya secara literal, dan bukannya menggunakannya sebagai metacharacter. Enjin regex hanya akan mencari aksara [dan ]betul-betul jika kedua-duanya didahului oleh garis miring ke belakang:
corak: \[\]
rentetan: Anda tidak boleh memadankan [] menggunakan regex! Anda akan menyesali ini!
perlawanan:                  ^^ 
( Mari kita lihat apa yang berlaku kali ini ) OK, bagaimana jika kita mahu mencari garisan terbalik itu sendiri? Jawapannya mudah sahaja. Memandangkan garis miring ke belakang \juga merupakan watak istimewa, ia juga perlu dilepaskan. Bagaimana? Sebak ke belakang!
corak: \\
rentetan: C:\Users\Tanja\Pictures\Dogs
perlawanan:    ^^ ^^
( Contoh yang sama dalam amalan ) Hanya aksara khas mesti didahului dengan garis serong ke belakang. Semua aksara lain ditafsirkan secara literal secara lalai. Sebagai contoh, ungkapan biasa benar-benar sepadan dengan huruf kecil tsahaja :t
corak: t
rentetan: tttt
perlawanan: ^^ ^^
( Contoh ) Walau bagaimanapun, urutan ini \tberfungsi secara berbeza. Ia adalah templat untuk mencari watak tab:
corak: \t
rentetan: tttt
perlawanan:   ^^
( Contoh ) Beberapa jujukan melarikan diri yang biasa termasuk \n(pecah baris gaya UNIX) dan \r(digunakan dalam pemisah baris gaya Windows \r\n). \rialah aksara "carriage return" dan \nmerupakan watak "line feed", yang kedua-duanya ditakrifkan bersama-sama dengan piawaian ASCII semasa teletypewriters masih digunakan secara meluas. Urutan pelarian biasa yang lain akan dibincangkan kemudian dalam tutorial ini.

Sementara itu, mari kita perkukuhkan bahan dengan beberapa teka-teki mudah:

Cuba tulis ungkapan biasa untuk mencari... ungkapan biasa ;) Hasilnya sepatutnya seperti ini:
corak:
rentetan: ... padankan regex ini ` \[\] ` dengan regex?
perlawanan:                       ^^^^	
( Penyelesaian ) Adakah anda berjaya? Bagus! Sekarang cuba buat regex untuk mencari urutan pelarian seperti ini:
corak:
rentetan: ` \r `, ` \t `, dan ` \n ` adalah semua urutan pelarian regex.
perlawanan:   ^^ ^^ ^^
( Penyelesaian )

Langkah 4: cari aksara "mana-mana" menggunakan titik.

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 5Apabila menulis penyelesaian padanan jujukan melarikan diri yang kami lihat pada langkah sebelumnya, anda mungkin tertanya-tanya, "Bolehkah saya memadankan watak garisan ke belakang dan kemudian mana-mana watak lain yang mengikutinya?"... Sudah tentu anda boleh! Terdapat satu lagi watak istimewa yang digunakan untuk memadankan (hampir) mana-mana watak - watak titik (titik penuh). Inilah yang dilakukannya:
corak: .
string: Saya minta maaf, Dave. Saya takut saya tidak boleh berbuat demikian.
padanan: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	
( Contoh ) Jika anda hanya mahu memadankan corak yang kelihatan seperti jujukan melarikan diri, anda boleh melakukan sesuatu seperti ini:
corak: \\. 
rentetan: Hai Walmart ialah cucu saya, namanya " \n \r \t ".
perlawanan:                                              ^^ ^^ ^^	
( Contoh ) Dan, seperti semua aksara khas, jika anda ingin memadankan literal ., maka anda perlu mendahuluinya dengan aksara \:
corak: \. 
rentetan: Perang adalah Keamanan . Kebebasan adalah Perhambaan . Kejahilan adalah Kekuatan . 
perlawanan:             ^^
( Contoh )

Langkah 5: Julat Aksara

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 6Bagaimana jika anda tidak memerlukan sebarang simbol, tetapi hanya mahu mencari huruf dalam teks? Atau nombor? Atau vokal? Mencari mengikut kelas aksara dan julatnya akan membolehkan kami mencapai ini.
` \n `, ` \r ` dan ` \t ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .	
Aksara adalah "ruang putih" jika mereka tidak mencipta tanda yang boleh dilihat dalam teks. Ruang " " ialah ruang, pemisah baris atau tab. Katakan kita ingin mencari jujukan melarikan diri yang hanya mewakili aksara ruang kosong \n, \rdan \tdalam petikan di atas, tetapi bukan jujukan melarikan diri yang lain. Bagaimana kita boleh melakukan ini?
corak: \\[nrt] 
rentetan: ` \n `, ` \r ` dan ` \t ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:   ^^ ^^ ^^	
( Contoh ) Ini berfungsi, tetapi ini bukan penyelesaian yang sangat elegan. Bagaimana jika kemudian kita perlu memadankan urutan pelarian untuk watak "suapan borang", \f? (Simbol ini digunakan untuk menunjukkan pemisah halaman dalam teks.)
corak: \\[nrt] 
rentetan: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:   ^^ ^^ ^^	
( Penyelesaian tidak berfungsi ) Dengan pendekatan ini, kita perlu menyenaraikan secara berasingan setiap huruf kecil yang ingin kita padankan, dalam kurungan segi empat sama. Cara yang lebih mudah untuk melakukan ini ialah menggunakan julat aksara untuk memadankan mana-mana huruf kecil:
corak: rentetan \\[az] 
: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:   ^^ ^^ ^^ ^^	
( Dan ini sudah berfungsi ) Julat aksara berfungsi seperti yang anda jangkakan, memandangkan contoh di atas. Letakkan kurungan segi empat sama di sekeliling huruf pertama dan terakhir yang anda mahu padankan, dengan tanda sempang di antaranya. Sebagai contoh, jika anda hanya mahu mencari "set" garis sengkang terbalik \dan satu huruf dari akepada m, anda boleh melakukan perkara berikut:
corak: rentetan \\[am] 
: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:                         ^^	
( Contoh ) Jika anda ingin memadankan berbilang julat, hanya letakkannya hujung ke hujung antara kurungan segi empat sama:
corak: \\[a-gq-z] 
rentetan: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:         ^^ ^^ ^^	
( Contoh ) Julat aksara biasa yang lain termasuk: A-Zdan0-9

Mari cuba mereka dalam amalan dan selesaikan beberapa masalah:

Nombor perenambelasan boleh mengandungi digit 0-9dan juga huruf A-F. Apabila digunakan untuk menentukan warna, kod heksadesimal boleh mengandungi maksimum tiga aksara. Cipta ungkapan biasa untuk mencari kod perenambelasan yang sah dalam senarai di bawah:
corak:
rentetan: 1H8 4E2 8FF 0P1 T8B 776 42B G12
perlawanan:      ^^^ ^^^ ^^^ ^^^	
( Penyelesaian ) Menggunakan julat aksara, cipta ungkapan biasa yang hanya akan memilih konsonan huruf kecil (bukan vokal, termasuk y) dalam ayat di bawah:
corak:
rentetan: T e w a lls i n th e m a ll a r e t o t a lly , t o t a lly  t a ll .
perlawanan:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Penyelesaian )

Langkah 6: "bukan", karet, sirkumfleks, karet... simbol^

RegEx: 20 langkah pendek untuk menguasai ungkapan biasa.  Bahagian 1 - 7Sesungguhnya, terdapat lebih 9000 nama untuk simbol ini :) Tetapi, untuk kesederhanaan, mungkin kita akan menumpukan pada "tidak". Penyelesaian saya untuk masalah terakhir adalah agak panjang. Ia mengambil 17 aksara untuk mengatakan "dapatkan keseluruhan abjad kecuali huruf vokal." Sudah tentu ada cara yang lebih mudah untuk melakukan ini. Tanda "tidak" ^membolehkan kami menentukan aksara dan julat aksara yang tidak boleh sepadan dengan yang dinyatakan dalam corak. Penyelesaian yang lebih mudah untuk masalah terakhir di atas ialah mencari aksara yang tidak mewakili vokal:
corak: [^aeiou] 
rentetan:   Th e w a lls in th e m a ll a r e t o t a lly, t o t a lly  t a ll. 
perlawanan: ^^ ^^ ^^^^ ^^^^ ^^ ^^^ ^ ^^ ^ ^^^^^^ ^ ^^^^^ ^^^	
( Contoh ) Tanda "tidak" ^sebagai aksara paling kiri dalam kurungan segi empat []sama memberitahu enjin ungkapan biasa untuk memadankan satu (mana-mana) aksara yang tiada dalam kurungan segi empat sama. Ini bermakna ungkapan biasa di atas juga sepadan dengan semua ruang, noktah ., koma ,dan huruf besar Tpada permulaan ayat. Untuk mengecualikannya, kami juga boleh meletakkannya dalam kurungan segi empat sama:
corak: [^aeiou .,T] rentetan  
: T e w a lls i n th e m a ll a r e t o t ally , t o t a lly t a ll . 
perlawanan:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Contoh ) Notabahawa dalam kes ini, kita tidak perlu melepaskan tempoh dengan garis serong ke belakang, seperti yang kita lakukan sebelum ini apabila kita mencarinya tanpa menggunakan kurungan segi empat sama. Banyak watak istimewa dalam kurungan segi empat sama diperlakukan secara literal, termasuk watak terbuka [- tetapi bukan penutup - ]kurungan (boleh anda teka mengapa?). Watak garis serong ke belakang \juga tidak ditafsirkan secara literal. Jika anda ingin memadankan garis miring ke belakang literal \menggunakan kurungan segi empat sama, maka anda mesti melepaskannya dengan mendahuluinya dengan garis miring ke belakang berikut \\. Tingkah laku ini direka bentuk supaya aksara ruang putih juga boleh diletakkan dalam kurungan segi empat sama untuk dipadankan:
corak: [\t]
rentetan: tttt
perlawanan:   ^^
( Contoh ) Tanda "tidak" ^juga boleh digunakan dengan julat. Jika saya mahu menangkap hanya aksara a, b, c, x, ydan z, saya boleh melakukan sesuatu seperti ini:
corak: [abcxyz] 
rentetan:   abc defghijklmnopqrstuvw padanan xyz 
: ^^^ ^^^
( Contoh ) ...atau, saya boleh menyatakan bahawa saya ingin mencari mana-mana aksara yang bukan antara ddan w:
corak: [^dw] 
rentetan:   abc defghijklmnopqrstuvw padanan xyz 
: ^^^ ^^^
( Contoh ) Walau bagaimanapun,berhati-hatidengan "tidak" ^. Mudah untuk berfikir "baik, saya nyatakan [^ b-f], jadi saya harus mendapatkan huruf kecil aatau sesuatu selepas f. Itu tidak berlaku. Regex ini akan memadankan mana-mana aksara yang bukan dalam julat itu, termasuk huruf, nombor, tanda baca dan ruang.
corak: [^dw] 
rentetan:   abc defg h . i , j - padanan xyz klmnopqrstuvw 
: ^^^ ^ ^ ^ ^ ^^^
( Contoh )

Meratakan tugas:

Gunakan tanda "tidak" ^dalam kurungan segi empat sama untuk memadankan semua perkataan di bawah yang tidak berakhir dengan y:
corak:
rentetan: day dog ​​​​hog hay bog bay ray rub 
mancis:      ^^^ ^^^ ^^^ ^^^	
( Penyelesaian ) Tulis ungkapan biasa menggunakan julat dan tanda "tidak" ^untuk mencari semua tahun antara 1977 dan 1982 (termasuk):
corak:
rentetan: 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984
perlawanan:            ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
( Penyelesaian ) Tulis ungkapan biasa untuk mencari semua aksara yang bukan aksara tanda "bukan" ^:
corak:
rentetan:   abc1 ^ 23*() 
padanan: ^^^^ ^^^^^	
( Penyelesaian )

Langkah 7: Kelas Watak

Kelas aksara adalah lebih mudah daripada julat aksara. Enjin ekspresi biasa yang berbeza mempunyai kelas yang berbeza yang tersedia, jadi saya hanya akan membincangkan yang utama di sini. (Semak versi regex yang anda gunakan, kerana mungkin terdapat lebih banyak daripada mereka - atau ia mungkin berbeza daripada yang ditunjukkan di sini.) Kelas aksara berfungsi hampir seperti julat, tetapi anda tidak boleh menentukan nilai 'mula' dan 'tamat':
Kelas simbol
\d "nombor"[0-9]
\w "simbol perkataan"[A-Za-z0-9_]
\s "ruang"[ \t\r\n\f]
Kelas aksara "perkataan" \wamat berguna kerana set aksara ini selalunya diperlukan untuk pengecam yang sah (nama pembolehubah, nama fungsi, dll.) dalam pelbagai bahasa pengaturcaraan. Kita boleh gunakan \wuntuk memudahkan ungkapan biasa yang kita lihat sebelum ini:
corak: rentetan \\[az] 
: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:   ^^ ^^ ^^ ^^	
Menggunakan \wkita boleh menulis seperti ini:
corak: \\\w 
rentetan: ` \n `, ` \r `, ` \t ` dan ` \f ` ialah aksara ruang putih, ` \. `, ` \\ ` dan ` \[ ` bukan .
perlawanan:   ^^ ^^ ^^ ^^	
( Contoh )

2 tugas untuk nasib:

Seperti yang anda dan saya ketahui, dalam Java, pengecam (nama pembolehubah, kelas, fungsi, dll.) hanya boleh bermula dengan huruf a- zA- Z, tanda dolar $atau garis bawah _. ( garis bawah adalah, sudah tentu, gaya yang tidak baik, tetapi pengkompil melangkaunya, nota penterjemah ). Selebihnya aksara mestilah aksara "perkataan" \w. Menggunakan satu atau lebih kelas aksara, cipta ungkapan biasa untuk mencari pengecam Java yang sah antara jujukan tiga aksara berikut:
corak:
rentetan:   __e $12 .x2 foo Bar 3mm
perlawanan: ^^^ ^^^ ^^^ ^^^	
( Penyelesaian ) Nombor Keselamatan Sosial (SSN) AS ialah nombor 9 digit dalam format XXX-XX-XXXX, di mana setiap X boleh menjadi sebarang digit [0-9]. Menggunakan satu atau lebih kelas aksara, tulis ungkapan biasa untuk mencari SSN yang diformat dengan betul dalam senarai di bawah:
corak:
rentetan: 113-25=1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
perlawanan:              ^^^^^^^^^^
( Penyelesaian ) RegEx: 20 langkah pendek untuk menguasai ungkapan biasa. Bahagian 2. 20 langkah pendek untuk menguasai ungkapan biasa. Bahagian 3. RegEx: 20 langkah pendek untuk menguasai ungkapan biasa. Bahagian 4.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION