JavaRush /Java Blog /Random-ID /RegEx: 20 langkah singkat untuk menguasai ekspresi regule...
Artur
Level 40
Tallinn

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler. Bagian 1

Dipublikasikan di grup Random-ID
Artikel asli ini ada di sini . Mungkin tidak ada yang namanya terlalu banyak teori, dan saya akan memberikan beberapa link ke materi lebih detail tentang regex di akhir artikel. Namun bagi saya, mulai mendalami topik seperti ekspresi reguler akan jauh lebih menarik jika ada kesempatan untuk tidak hanya menjejalkan, tetapi juga segera mengkonsolidasikan pengetahuan dengan menyelesaikan tugas-tugas kecil di sepanjang jalan. RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 1Mari kita mulai. Biasanya penentang penggunaan ekspresi reguler ('RegEx' atau hanya 'regex') dalam pemrograman mengutip kutipan berikut, yang dikaitkan dengan Jamie Zawinski: "Beberapa orang, ketika menghadapi masalah, berpikir, 'Saya tahu, saya akan menggunakan ekspresi reguler .'" Sekarang mereka mempunyai dua Masalah". Faktanya, menggunakan ekspresi reguler bukanlah ide yang baik atau buruk. Dan ini dengan sendirinya tidak akan menambah masalah dan tidak akan menyelesaikan satupun masalah. Itu hanya sebuah alat. Dan cara Anda menggunakannya (benar atau salah) menentukan hasil yang akan Anda lihat. Jika Anda mencoba menggunakan regex, misalnya, untuk membuat parser HTML, kemungkinan besar Anda akan mengalami kesulitan . Namun jika Anda hanya ingin mengekstrak, misalnya stempel waktu dari beberapa baris, Anda mungkin baik-baik saja. Untuk memudahkan Anda menguasai ekspresi reguler, saya telah menyusun pelajaran ini yang akan membantu Anda menguasai ekspresi reguler dari awal hanya dalam dua puluh langkah singkat. Tutorial ini terutama berfokus pada konsep dasar ekspresi reguler dan mempelajari topik lebih lanjut hanya jika diperlukan.

Langkah 1: Mengapa menggunakan ekspresi reguler

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 2Ekspresi reguler digunakan untuk mencari kecocokan dalam teks menggunakan pola (pola) tertentu. Dengan menggunakan regex, kita dapat dengan mudah dan sederhana mengekstrak kata-kata dari teks, serta karakter literal dan meta individual serta urutannya yang memenuhi kriteria tertentu. Inilah yang Wikipedia beritahukan kepada kita tentangnya : Ekspresi reguler adalah bahasa formal untuk mencari dan memanipulasi substring dalam teks, berdasarkan penggunaan metakarakter (karakter wildcard). Untuk pencarian, string sampel (pola bahasa Inggris, dalam bahasa Rusia sering disebut "template", "mask") digunakan, terdiri dari simbol dan metasimbol dan mendefinisikan aturan pencarian. Untuk memanipulasi teks, string pengganti juga ditentukan, yang juga dapat berisi karakter khusus. Polanya bisa sesederhana kata dogdalam kalimat ini:
Rubah coklat yang gesit melompati anjing pemalas.
Ekspresi reguler ini terlihat seperti ini:
anjing
...Cukup mudah, bukan? Polanya juga bisa berupa kata apa saja yang mengandung huruf tersebut o. Ekspresi reguler untuk menemukan pola seperti itu mungkin terlihat seperti ini:
\ Wow * _
( Anda dapat mencoba ekspresi reguler ini di sini .) Anda akan melihat bahwa ketika persyaratan "pencocokan" menjadi lebih kompleks, ekspresi reguler juga menjadi lebih kompleks. Ada bentuk notasi tambahan untuk menentukan kelompok karakter dan mencocokkan pola berulang, yang akan saya jelaskan di bawah. Namun, begitu kita menemukan kecocokan dengan suatu pola di beberapa teks, lalu apa yang bisa kita lakukan? Mesin ekspresi reguler modern memungkinkan Anda mengekstrak karakter atau rangkaian karakter (substring) dari teks yang ada, atau menghapusnya, atau menggantinya dengan teks lain. Secara umum, ekspresi reguler digunakan untuk mengurai dan memanipulasi teks. Kita dapat mengekstrak, misalnya, substring yang terlihat seperti alamat IP dan kemudian mencoba memverifikasinya. Atau kita dapat mengekstrak nama dan alamat email dan menyimpannya dalam database. Atau gunakan ekspresi reguler untuk menemukan informasi sensitif (seperti nomor paspor atau nomor telepon) di email dan memperingatkan pengguna bahwa mereka mungkin membahayakan diri mereka sendiri. Regex benar-benar merupakan alat serbaguna yang mudah dipelajari namun sulit dikuasai: “Sama seperti ada perbedaan antara memainkan musik dengan baik dan menciptakan musik, ada perbedaan antara mengetahui ekspresi reguler dan memahaminya.” - Jeffrey E. F. Friedl, Menguasai Ekspresi Reguler

Langkah 2: Kurung Kotak[]

Ekspresi reguler paling sederhana yang mudah dipahami adalah ekspresi yang hanya mencari kecocokan karakter per karakter antara pola ekspresi reguler dan string target. Misalnya, kita mencoba mencari kucing: RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 3
pola: kucing
string: Kucing itu terpotong ketika berlari di bawah mobil.
pertandingan:      ^^^
( Cara kerjanya dalam praktik - lihat di sini ) Catatan! Semua solusi disajikan di sini sebagai solusi yang mungkin saja. Dalam ekspresi reguler, seperti dalam pemrograman pada umumnya, Anda dapat menyelesaikan masalah yang sama dengan cara yang berbeda. Namun, selain perbandingan karakter per karakter yang ketat, kami juga dapat menentukan kecocokan alternatif menggunakan tanda kurung siku:
pola: ca[rt]
string: Kucing itu terpotong ketika berlari di bawah mobil.
cocok:      ^^^ ^^^
( Cara kerjanya ) Tanda kurung siku pembuka dan penutup memberi tahu mesin ekspresi reguler bahwa ia harus cocok dengan salah satu karakter yang ditentukan, tetapi hanya satu. Ekspresi reguler di atas tidak akan menemukan, misalnya, cartkeseluruhan kata, namun hanya akan menemukan sebagian saja:
pola: ca[rt]
string: Kucing itu terpotong ketika berlari di bawah gerobak.
cocok:      ^^^ ^^^
( Cara kerjanya ) Saat Anda menggunakan tanda kurung siku, Anda memberi tahu mesin ekspresi reguler untuk mencocokkan hanya salah satu karakter yang ada di dalam tanda kurung. Mesin menemukan character c, kemudian character a, tetapi jika karakter berikutnya bukan ratau t, maka ini tidak sepenuhnya cocok. Jika ia menemukan ca, lalu salah satu dari r, atau t, ia berhenti. Itu tidak akan mencoba mencocokkan lebih banyak karakter karena tanda kurung siku menunjukkan bahwa hanya satu karakter yang ada yang perlu dicocokkan. Ketika menemukan ca, ia menemukan rkata berikutnya cart, dan berhenti karena sudah menemukan kecocokan untuk urutannya car.

Tujuan pelatihan:

Tulis ekspresi reguler yang cocok dengan 10 pola haddalam Hadkutipan permainan kata-kata yang tidak dapat diterjemahkan dalam dialek lokal ini:
pola:
string: Jim, di mana Bill telah "memiliki" , telah "telah memiliki" . "Telah" ternyata benar.
pertandingan:                  ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^
( Lihat kemungkinan solusinya di sini ) Bagaimana dengan semua nama hewan di kalimat berikut?
pola:
string: Seekor kelelawar, kucing, dan tikus masuk ke bar...
cocok:    ^^^ ^^^ ^^^
( Solusi yang mungkin ) Atau bahkan lebih sederhana: temukan kata baratau bat:
pola:
string: Seekor kelelawar, kucing, dan tikus masuk ke bar...
cocok:    ^^^ ^^^
( Solusi yang mungkin ) Sekarang kita telah mempelajari cara menulis ekspresi reguler yang kurang lebih kompleks, dan kita baru sampai pada langkah 2! Ayo lanjutkan!

Langkah 3: Urutan Pelarian

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 4Pada langkah sebelumnya, kita mempelajari tentang tanda kurung siku []dan bagaimana tanda kurung siku membantu kita menemukan kecocokan alternatif menggunakan mesin regex. Namun bagaimana jika kita ingin mencari kecocokan dalam bentuk tanda kurung siku terbuka dan tertutup itu sendiri []? Saat kami ingin menemukan kecocokan karakter demi karakter dari kata tersebut cat, kami menyediakan mesin regex dengan urutan karakter ini ( cat). Mari kita coba mencari tanda kurung siku []dengan cara yang sama:
pola: [] 
string: Anda tidak dapat mencocokkan [] menggunakan regex! Anda akan menyesali ini!
cocok: 
( Mari kita lihat apa yang terjadi ) Namun ada yang tidak berfungsi... Hal ini karena karakter tanda kurung siku bertindak sebagai karakter mesin regex khusus yang biasanya digunakan untuk menunjukkan sesuatu yang lain, dan bukan merupakan pola literal untuk mencocokkannya sendiri. Seperti yang kita ingat dari langkah 2, mereka digunakan untuk mencari kecocokan alternatif sehingga mesin regex dapat mencocokkan karakter apa pun yang ada di antara karakter tersebut. Jika Anda tidak memasukkan karakter apa pun di antara karakter tersebut, hal ini dapat menyebabkan kesalahan. Untuk mencocokkan karakter khusus ini, kita harus menghindarinya dengan mengawalinya dengan karakter garis miring terbalik \. Garis miring terbalik (atau garis miring terbalik) adalah karakter khusus lainnya yang memberitahu mesin regex untuk mencari karakter berikutnya secara harfiah, daripada menggunakannya sebagai metakarakter. Mesin regex hanya akan mencari karakter [dan ]secara harfiah jika keduanya diawali dengan garis miring terbalik:
pola: \[\]
string: Anda tidak dapat mencocokkan [] menggunakan regex! Anda akan menyesali ini!
pertandingan:                  ^^ 
( Mari kita lihat apa yang terjadi kali ini ) Oke, bagaimana jika kita ingin mencari garis miring terbalik itu sendiri? Jawabannya sederhana. Karena garis miring terbalik \juga merupakan karakter khusus, garis miring terbalik juga perlu di-escape. Bagaimana? Garis miring terbalik!
pola: \\
string: C:\Users\Tanja\Pictures\Dogs
pertandingan:    ^ ^ ^ ^
( Contoh yang sama dalam praktiknya ) Hanya karakter khusus yang harus diawali dengan garis miring terbalik. Semua karakter lainnya ditafsirkan secara harfiah secara default. Misalnya, ekspresi reguler thanya cocok dengan thuruf kecil:
pola: t
string: tttt
pertandingan: ^ ^ ^ ^
( Contoh ) Namun, urutan ini \tbekerja secara berbeda. Ini adalah template untuk mencari karakter tab:
pola: \t
string: tttt
cocok:   ^ ^ ^
( Contoh ) Beberapa urutan escape yang umum mencakup \n(jeda baris gaya UNIX) dan \r(digunakan dalam jeda baris gaya Windows \r\n). \radalah karakter "carriage return" dan \nmerupakan karakter "line feed", keduanya didefinisikan bersama dengan standar ASCII ketika teletypewriter masih digunakan secara luas. Urutan escape umum lainnya akan dibahas nanti di tutorial ini.

Sementara itu, mari kita gabungkan materi dengan beberapa teka-teki sederhana:

Cobalah menulis ekspresi reguler untuk menemukan... ekspresi reguler ;) Hasilnya akan seperti ini:
pola:
string: ...cocokkan regex ` \[\] ` ini dengan regex?
pertandingan:                       ^^^^	
( Solusi ) Apakah Anda berhasil? Bagus sekali! Sekarang coba buat regex untuk mencari escape sequence seperti ini:
pola:
string: ` \r `, ` \t `, dan ` \n ` semuanya merupakan rangkaian escape regex.
pertandingan:   ^^ ^^ ^^
( Solusi )

Langkah 4: cari karakter "apa saja" menggunakan titik.

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 5Saat menulis solusi pencocokan escape sequence yang kita lihat pada langkah sebelumnya, Anda mungkin bertanya-tanya, "Dapatkah saya mencocokkan karakter garis miring terbalik dan karakter lain yang mengikutinya?"... Tentu saja bisa! Ada karakter khusus lain yang digunakan untuk mencocokkan (hampir) karakter apa pun - karakter titik (titik). Inilah fungsinya:
pola: .
tali: maafkan aku, Dave. Saya khawatir saya tidak bisa melakukan itu.
pertandingan: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	
( Contoh ) Jika Anda hanya ingin mencocokkan pola yang terlihat seperti rangkaian escape, Anda dapat melakukan sesuatu seperti ini:
pola: \\. 
string: Hai Walmart adalah cucu saya, namanya " \n \r \t ".
pertandingan:                                              ^^ ^^ ^^	
( Contoh ) Dan, seperti semua karakter khusus, jika Anda ingin mencocokkan literal ., Anda harus mengawalinya dengan karakter \:
pola: \. 
string: Perang adalah Damai . Kebebasan adalah perbudakan . Ketidaktahuan adalah Kekuatan . 
cocok:             ^ ^ ^
( Contoh )

Langkah 5: Rentang Karakter

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 6Bagaimana jika Anda tidak memerlukan simbol apa pun, tetapi hanya ingin mencari huruf di teks? Atau angka? Atau vokal? Mencari berdasarkan kelas karakter dan jangkauannya akan memungkinkan kita mencapai hal ini.
` \n `, ` \r `, dan ` \t ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .	
Karakter disebut "spasi putih" jika tidak menimbulkan tanda yang terlihat di teks. Spasi " " adalah spasi, pemisah baris, atau tab. Katakanlah kita ingin mencari escape sequence yang hanya mewakili karakter spasi putih \n, \rdan \tpada bagian di atas, namun tidak mewakili escape sequence lainnya. Bagaimana kita bisa melakukan ini?
pola: \\[nrt] 
string: ` \n `, ` \r `, dan ` \t ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
pertandingan:   ^^ ^^ ^^	
( Contoh ) Ini berhasil, tetapi ini bukan solusi yang elegan. Bagaimana jika nanti kita perlu mencocokkan urutan escape untuk karakter "form feed", \f? (Simbol ini digunakan untuk menunjukkan hentian halaman dalam teks.)
pola: \\[nrt] 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
pertandingan:   ^^ ^^ ^^	
( Solusi tidak berfungsi ) Dengan pendekatan ini, kita perlu mencantumkan secara terpisah setiap huruf kecil yang ingin kita cocokkan, dalam tanda kurung siku. Cara yang lebih mudah untuk melakukan ini adalah dengan menggunakan rentang karakter untuk mencocokkan huruf kecil apa pun:
pola: \\[az] 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
cocok:   ^^ ^^ ^^ ^^	
( Dan ini sudah berhasil ) Rentang karakter berfungsi seperti yang Anda harapkan, berdasarkan contoh di atas. Tempatkan tanda kurung siku di sekitar huruf pertama dan terakhir yang ingin Anda cocokkan, dengan tanda hubung di antaranya. Misalnya, jika Anda hanya ingin mencari "kumpulan" garis miring terbalik \dan satu huruf dari ake m, Anda dapat melakukan hal berikut:
pola: \\[am] 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
pertandingan:                         ^^	
( Contoh ) Jika Anda ingin mencocokkan beberapa rentang, cukup tempatkan rentang tersebut ujung ke ujung di antara tanda kurung siku:
pola: \\[a-gq-z] 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
pertandingan:         ^^ ^^ ^^	
( Contoh ) Rentang karakter umum lainnya meliputi: A-Zdan0-9

Mari kita mencobanya dalam praktik dan menyelesaikan beberapa masalah:

Bilangan heksadesimal dapat berisi angka 0-9dan juga huruf A-F. Saat digunakan untuk menentukan warna, kode heksadesimal dapat berisi maksimal tiga karakter. Buat ekspresi reguler untuk menemukan kode heksadesimal yang valid dalam daftar di bawah:
pola:
tali: 1H8 4E2 8FF 0P1 T8B 776 42B G12
cocok:      ^^^ ^^^ ^^^ ^^^	
( Solusi ) Dengan menggunakan rentang karakter, buatlah ekspresi reguler yang hanya akan memilih konsonan huruf kecil (bukan vokal, termasuk y) dalam kalimat di bawah ini:
pola:string 
: Tembok - tembok di dalamnya akan kembali ke puncak , hingga ke puncak . _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pertandingan:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Solusi )

Langkah 6: "tidak", tanda sisipan, sirkumfleks, tanda sisipan... simbol^

RegEx: 20 langkah singkat untuk menguasai ekspresi reguler.  Bagian 1 - 7Memang benar, ada lebih dari 9000 nama untuk simbol ini :) Tapi, untuk mempermudah, mungkin kita akan fokus pada "tidak". Solusi saya untuk masalah terakhir agak panjang. Dibutuhkan 17 karakter untuk mengatakan "dapatkan seluruh alfabet kecuali vokal." Tentu saja ada cara yang lebih mudah untuk melakukan hal ini. Tanda "tidak" ^memungkinkan kita menentukan karakter dan rentang karakter yang tidak boleh cocok dengan yang ditentukan dalam pola. Solusi yang lebih sederhana untuk soal terakhir di atas adalah menemukan karakter yang tidak mewakili vokal:
pola : [ ^ aeiou ] string 
:   Dinding - dinding di bagian paling atas , bagian paling atas , bagian paling atas . _ _ _ _ _ 
pertandingan: ^^ ^^ ^^^^ ^^^^ ^^ ^^^ ^ ^^ ^ ^^^^^^ ^ ^^^^^ ^^^ 	
( Contoh ) Tanda "bukan" ^sebagai karakter paling kiri dalam tanda kurung siku []memberitahu mesin ekspresi reguler untuk mencocokkan satu (setiap) karakter yang tidak ada dalam tanda kurung siku. Artinya ekspresi reguler di atas juga cocok dengan semua spasi, titik ., koma ,, dan huruf kapital Tdi awal kalimat. Untuk mengecualikannya, kita juga dapat menempatkannya dalam tanda kurung siku:
pattern: [^aeiou .,T ] string :  
T h e w a lls in th e m a ll a r e t o t ally , to t a lly ta ll . 
pertandingan:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Contoh ) catatanbahwa dalam hal ini, kita tidak perlu keluar dari titik dengan garis miring terbalik, seperti yang kita lakukan sebelumnya ketika kita mencarinya tanpa menggunakan tanda kurung siku. Banyak karakter khusus dalam tanda kurung siku yang diperlakukan secara harfiah, termasuk karakter tanda kurung buka [- namun bukan ]karakter tanda kurung siku penutup (dapatkah Anda menebak alasannya?). Karakter backslash \juga tidak diartikan secara harfiah. Jika Anda ingin mencocokkan garis miring terbalik literal \menggunakan tanda kurung siku, Anda harus menghindarinya dengan mengawalinya dengan garis miring terbalik berikut \\. Perilaku ini dirancang agar karakter spasi juga dapat ditempatkan dalam tanda kurung siku untuk pencocokan:
pola: [\t]
string: tttt
cocok:   ^ ^ ^
( Contoh ) Tanda "tidak" ^juga dapat digunakan dengan rentang. Jika saya hanya ingin menangkap karakter a, b, c, x, ydan z, saya dapat melakukan sesuatu seperti ini:
pola: [abcxyz] 
string:   abc defghijklmnopqrstuvw xyz 
cocok: ^^^ ^^^
( Contoh ) ...atau, saya dapat menentukan bahwa saya ingin mencari karakter apa pun yang tidak berada di antara ddan w:
pola: [^dw] 
string:   abc defghijklmnopqrstuvw xyz 
cocok: ^^^ ^^^
( Contoh ) Namun,hati-hatidengan "tidak" ^. Sangat mudah untuk berpikir "baiklah, saya tentukan [^ b-f], jadi saya harus mendapatkan huruf kecil aatau sesuatu setelahnya f. Bukan itu masalahnya. Regex ini akan cocok dengan karakter apa pun yang tidak berada dalam rentang tersebut, termasuk huruf, angka, tanda baca, dan spasi.
pola: [^dw] 
string:   abc defg h . i , j - klmnopqrstuvw xyz 
cocok: ^^^ ^ ^ ^ ^ ^^^
( Contoh )

Tugas menaikkan level:

Gunakan tanda "tidak" ^dalam tanda kurung siku untuk mencocokkan semua kata di bawah ini yang tidak berakhiran y:
pola:
string: day dog ​​hog hay bog bay ray rub 
pertandingan:      ^^^ ^^^ ^^^ ^^^	
( Solusi ) Tuliskan persamaan reguler menggunakan rentang dan tanda "bukan" ^untuk mencari semua tahun antara 1977 dan 1982 (inklusif):
pola:
rangkaian: 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984
cocok:            ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
( Solusi ) Tuliskan ekspresi reguler untuk mencari semua karakter yang bukan merupakan karakter tanda "bukan" ^:
pola:
string:   abc1 ^ 23*() 
cocok dengan: ^^^^ ^^^^^	
( Solusi )

Langkah 7: Kelas Karakter

Kelas karakter bahkan lebih sederhana daripada rentang karakter. Mesin ekspresi reguler yang berbeda memiliki kelas yang berbeda, jadi saya hanya akan membahas yang utama di sini. (Periksa versi regex mana yang Anda gunakan, karena mungkin ada lebih banyak - atau mungkin berbeda dari yang ditampilkan di sini.) Kelas karakter berfungsi hampir seperti rentang, namun Anda tidak dapat menentukan nilai 'awal' dan 'akhir':
Kelas simbol
\d "angka"[0-9]
\w "simbol kata"[A-Za-z0-9_]
\s "spasi"[ \t\r\n\f]
Kelas karakter "kata" \wsangat berguna karena kumpulan karakter ini sering kali diperlukan untuk pengidentifikasi yang valid (nama variabel, nama fungsi, dll.) dalam berbagai bahasa pemrograman. Kita dapat menggunakan \wekspresi reguler yang kita lihat sebelumnya untuk menyederhanakan:
pola: \\[az] 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
cocok:   ^^ ^^ ^^ ^^	
Dengan menggunakan \wkita dapat menulis seperti ini:
pola: \\\w 
string: ` \n `, ` \r `, ` \t `, dan ` \f ` adalah karakter spasi, ` \. `, ` \\ ` dan ` \[ ` tidak .
cocok:   ^^ ^^ ^^ ^^	
( Contoh )

2 tugas untuk keberuntungan:

Seperti yang Anda dan saya ketahui, di Java, pengenal (nama variabel, kelas, fungsi, dll.) hanya dapat dimulai dengan huruf a- zA- Z, tanda dolar $, atau garis bawah _. ( garis bawah, tentu saja, merupakan gaya yang buruk, tetapi kompiler melewatkannya, catatan penerjemah ). Karakter lainnya harus berupa karakter "kata" \w. Dengan menggunakan satu atau lebih kelas karakter, buat ekspresi reguler untuk mencari pengidentifikasi Java yang valid di antara rangkaian tiga karakter berikut:
pola:
string:   __e $12 .x2 foo Batang 3mm
cocok: ^^^ ^^^ ^^^ ^^^	
( Solusi ) Nomor Jaminan Sosial AS (SSN) adalah 9 digit angka dalam format XXX-XX-XXXX, yang setiap X dapat berupa digit apa pun [0-9]. Dengan menggunakan satu atau lebih kelas karakter, tulis ekspresi reguler untuk menemukan SSN yang diformat dengan benar dalam daftar di bawah:
pola:
tali: 113-25=1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
cocok:              ^^^^^^^^^^^
( Solusi ) RegEx: 20 langkah singkat untuk menguasai ekspresi reguler. Bagian 2. 20 langkah singkat untuk menguasai ekspresi reguler. Bagian 3. RegEx: 20 langkah singkat untuk menguasai ekspresi reguler. Bagian 4.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION