Ekspresi reguler (dengan contoh) - 1

"Dan sekarang saya akan memberi tahu Anda tentang ekspresi reguler. Topik ini rumit dan sederhana pada saat yang sama. Untuk memahami ekspresi reguler secara menyeluruh, Anda mungkin perlu membaca dua atau tiga buku besar, tetapi saya dapat mengajari Anda cara menggunakannya sekarang."

"Sebagai pemrogram berpengalaman suka bercanda, jika Anda memiliki masalah dan berpikir Anda akan menyelesaikannya dengan ekspresi reguler, sekarang Anda memiliki dua masalah."

"Hmm."

"Kuharap aku tidak terlalu menakutimu, temanku. Bukan?"

"Oke, bagus. Jadi, topik baru kita adalah ekspresi reguler."

"Jika kita terlalu menyederhanakannya, ekspresi reguler adalah pola untuk string."

"Anda dapat memeriksa apakah suatu string cocok dengan pola yang diberikan. Anda juga dapat membagi string menjadi beberapa bagian menggunakan pembatas atau pola."

"Tapi mari kita mulai dengan sesuatu yang sederhana: apa itu pola? "

"Dalam SQL (tetapi tidak dalam Java), Anda dapat memeriksa apakah suatu string cocok dengan pola tertentu. Begini tampilannya:"

name like 'Alex%'

Di sini nama adalah variabel, seperti perintah untuk memeriksa pola, dan "Alex%" adalah polanya.

Dalam hal ini, % berarti sembarang string atau substring.

Pola String yang cocok dengan pola
'Alex%' Alex
Alex andr
Alex ander
Alex andra
….
'%X%' Ma x
Ma x im
Ale x andr
'%A' Olg seorang
Helen seorang
Ir … _

"Dalam SQL, jika Anda perlu menentukan bahwa seharusnya hanya ada satu karakter lain, maka Anda akan menggunakan karakter garis bawah: "_"."

Pola String yang cocok dengan pola
'Alex%_' Alex
Alex andr
Alex ander
Alex andra
….
'_X' Kapak
Bx
Cx
'___' Aaa
Aab
Bbb

"Itu masuk akal."

"Oke, kalau begitu mari beralih ke ekspresi reguler."

"Ekspresi reguler biasanya mencakup pembatasan tidak hanya pada jumlah karakter, tetapi juga 'konten' mereka. "Masker apa pun biasanya terdiri dari dua bagian (terkadang lebih): yang pertama mendeskripsikan 'preferensi' karakter, dan yang kedua mendeskripsikan jumlah karakter ."

"Berikut adalah beberapa contoh konten :"

Pola Keterangan Contoh
. Salah satu karakter 1
\D Digit apa saja 7
\D Setiap non-digit C
\S Spasi, jeda baris, atau karakter tab ' '
\S Apa pun kecuali spasi, tab, dan jeda baris F
[az] Huruf apa saja dari a sampai z z
[0-9] Setiap digit dari 0 sampai 9. 8
\w Setiap karakter kata C
\W Setiap karakter non-kata _

"Aku tidak akan langsung mengingatnya, tapi sepertinya tidak terlalu sulit."

“Bagus sekali, berikut adalah contoh jumlah karakter dalam sebuah topeng:

Pola Keterangan Contoh
A? Karakter 'A' muncul sekali atau tidak sama sekali A
B+ Karakter 'B' muncul satu kali atau lebih BBB
C* Karakter 'C' muncul nol kali atau lebih CCC
D{n} Karakter 'D' muncul sebanyak n kali Pola D{4} cocok dengan DDDD
E{n,} Karakter 'E' muncul sebanyak n kali atau lebih Pola E{2,} cocok dengan EEEEEEE
F{n,m} Karakter 'F' terjadi antara n dan m kali Pola E{2,4} cocok dengan EEEE

"Itu semua tampaknya cukup mudah."

"Kamu menangkap semuanya dengan sangat cepat. Sekarang mari kita lihat bagaimana tampilannya bersama-sama:"

Pola Keterangan Contoh
[iklan]? Karakter antara 'a' dan 'd' muncul sekali atau tidak sama sekali a,b,c,d
[bd,z]+ Karakter 'b', 'c', 'd', atau 'z' muncul satu kali atau lebih b, bcdcdbdbdbdbzzzzbbzbzb, zbz
[1,7-9]* Angka 1, 7, 8, atau 9 terjadi nol kali atau lebih 1, 7, 9, 9777, 111199
1{5} Angka 1 muncul 5 kali 11111
[1,2,a,b]{2} Simbol 1, 2, 'a', atau 'b' muncul dua kali 11, 12, 1a, ab, 2b, bb, 22
[a,0]{2,3} Simbol 'a' atau 0 muncul 2 atau 3 kali aa, a0,00,0a, aaa,000, a00,0a0, a0a

"Masih jelas."

"Benarkah? Hmm. Entah aku menjelaskan semuanya dengan sangat baik atau kamu terlalu cepat memahaminya. Yah, bagaimanapun juga, itu bagus untuk kita."

"Ini beberapa wawasan baru untuk Anda."

"Karena ekspresi reguler sering digunakan untuk menemukan substring, kita dapat menambahkan dua karakter lagi (^ dan $) ke pola kita."

"^ artinya substring harus menyertakan awal string."

"$ berarti substring harus menyertakan akhir string."

"Ini beberapa contohnya:"

Pola String dan substring yang sesuai dengan pola
sebuah{3} aaa  a  aaa  a  aaa
a{3}$ aaa a aaa a  aaa
^a{3} aaa  a aaa a aaa
^a{3}$ aaa a aaa a aaa

"Dan satu hal penting lagi."

"Dalam ekspresi reguler, karakter berikut memiliki arti khusus: [ ] \ / ^ $ . | ? * + ( ) { }. Mereka disebut karakter kontrol. Jadi, Anda tidak bisa begitu saja menggunakannya dalam string."

"Seperti dalam kode Java, mereka harus diloloskan. Dan lagi seperti dalam kode Java, karakter '\' digunakan untuk ini."

"Jika kita ingin menggambarkan sebuah string yang terdiri dari tiga '?' karakter, kita tidak bisa menulis '?{3}', karena '?' adalah karakter kontrol. Kita perlu melakukannya seperti ini: \?{3}. Jika kita ingin menggunakan karakter '\', maka kita perlu menulis '\\'."

"OK mengerti."

"Dan sekarang ada informasi menarik lainnya. Dalam file dengan kode Java, karakter '\' juga harus di-escape dalam string, karena ini adalah karakter kontrol."

"Tentu saja."

"Jadi, jika Anda mencoba mendefinisikan ekspresi reguler Java dalam sebuah string, maka Anda perlu meng-escape karakter '\' dua kali."

"Ini contohnya:"

Saya ingin topeng yang cocok dengan 'c:\anything'
Secara teori, ekspresi reguler akan terlihat seperti ini:
satu karakter 'c',
titik dua,
garis miring terbalik,
titik, dan tanda bintang (untuk menunjukkan sejumlah karakter). Saya menambahkan spasi untuk meningkatkan keterbacaan:
c : \ .*
Tapi karakter '\' dan '.' perlu diloloskan, sehingga ekspresi reguler akan terlihat seperti ini:
c :   \\ \. *
Atau, tanpa spasi
c: \\ \. *
"Kita harus memiliki tiga garis miring terbalik dalam ekspresi reguler kita.
Artinya, dalam file Java ekspresi reguler akan terlihat seperti ini:"
String regexp = "c: \\\\ \\. *";

"Wow! Wah. Sekarang aku tahu."

"Dan jika Anda memutuskan untuk menggali lebih dalam, berikut adalah beberapa tautan bagus:"

Pelajaran di Wikipedia