Ekspresi reguler (kanthi conto) - 1

"Lan saiki aku bakal pitutur marang kowe babagan ekspresi reguler. Topik iki rumit lan prasaja ing wektu sing padha. Kanggo ngerti ekspresi reguler, sampeyan bisa uga kudu maca loro utawa telung buku sing akeh banget, nanging aku bisa mulang sampeyan carane nggunakake. saiki."

"Minangka programer sing berpengalaman seneng guyon, yen sampeyan duwe masalah lan mikir sampeyan bakal ngrampungake kanthi ekspresi biasa, saiki sampeyan duwe rong masalah."

"Hmm."

"Muga-muga aku ora wedi banget, kancaku. Ora?"

"Oke, apik. Dadi, topik anyar kita yaiku ekspresi biasa."

"Yen kita nyederhanakake, ekspresi reguler minangka pola kanggo senar."

"Sampeyan bisa mriksa manawa senar cocog karo pola tartamtu. Sampeyan uga bisa pamisah senar dadi bagean nggunakake delimiter utawa pola."

"Nanging ayo miwiti kanthi prasaja: apa pola kasebut? "

"Ing SQL (nanging ora ing Jawa), sampeyan bisa mriksa apa string cocog pola tartamtu. Iki carane katon:"

name like 'Alex%'

Ing kene jeneng variabel, kaya prentah kanggo mriksa pola, lan "Alex%" minangka pola.

Ing kasus iki, % tegese sembarang string utawa substring.

Pola String sing cocog karo pola
'Alex%' Alex
Alex lan
Alex lan
Alex andra
....
'%x%' Ma x
Ma x im
Ale x andr
'%a' Olg lan Helen lan Ir a


"Ing SQL, yen sampeyan kudu nemtokake manawa mung ana siji karakter liyane, sampeyan bakal nggunakake karakter garis ngisor: "_"."

Pola String sing cocog karo pola
'Alex%_' Alex
Alex lan
Alex lan
Alex andra
....
'_x' Ax
Bx
Cx
'___' Aaah Bbb …
_

"Sing nggawe akal."

"Oke, banjur pindhah menyang ekspresi biasa."

"Ekspresi reguler biasane kalebu watesan ora mung babagan jumlah karakter, nanging uga 'isi'. "Topeng apa wae biasane dumadi saka rong (kadhangkala luwih) bagean: sing pisanan nggambarake 'preferensi' karakter, lan sing kapindho nggambarake jumlah karakter. ."

"Iki sawetara conto konten :"

Pola Katrangan Tuladha
. Sembarang karakter 1
\d Sembarang digit 7
\D Sembarang non-digit C
\s Spasi, baris, utawa karakter tab ''
\S Apa wae kajaba spasi, tab, lan baris f
[az] Sembarang huruf saka a nganti z z
[0-9] Sembarang digit saka 0 nganti 9. 8
\w Sembarang karakter tembung c
\W Sembarang karakter non-tembung _

"Aku ora bakal ngelingi sing langsung, nanging ora katon angel banget."

"Apik banget, banjur iki conto jumlah karakter ing topeng: "

Pola Katrangan Tuladha
A? Karakter 'A' kedadeyan sapisan utawa ora kabeh A
B+ Karakter 'B' muncul kaping pindho utawa luwih BBBB
C* Karakter 'C' dumadi nol utawa luwih CCC
D{n} Karakter 'D' dumadi n kaping Pola D{4} cocog karo DDDD
E{n,} Karakter 'E' dumadi n utawa luwih Pola E{2,} cocog karo EEEEEEE
F {n,m} Karakter 'F' dumadi antarane n lan m kaping Pola E{2,4} cocog karo EEEE

"Iki kabeh katon gampang banget."

"Sampeyan lagi nyekel kabeh supaya cepet. Saiki ayo ndeleng carane iku kabeh bebarengan:"

Pola Katrangan Tuladha
[iklan]? Karakter antarane 'a' lan 'd' dumadi sepisan utawa ora kabeh a b c d
[bd,z]+ Karakter 'b', 'c', 'd', utawa 'z' dumadi kaping pindho utawa luwih b, bcdcdbdbdbzzzzbbzbzb, zbz
[1,7-9]* Angka 1, 7, 8, utawa 9 kedadeyan nol utawa luwih 1, 7, 9, 9777, 111199
1{5} Angka 1 dumadi kaping 5 11111
[1,2,a,b]{2} Simbol 1, 2, 'a', utawa 'b' dumadi kaping pindho 11, 12, 1a, ab, 2b, bb, 22
[a,0] {2,3} Simbol 'a' utawa 0 dumadi 2 utawa 3 kaping aa, a0,00,0a, aaa,000, a00,0a0, a0a

"Isih cetha kabeh."

"Tenan? Hmm. Salah siji aku nerangake kabeh kanthi apik utawa sampeyan cepet banget njupuk.

"Iki sawetara wawasan anyar kanggo sampeyan."

"Amarga ekspresi reguler asring digunakake kanggo nemokake substrings, kita bisa nambah rong karakter liyane (^ lan $) menyang pola kita."

"^ tegese substring kudu kalebu wiwitan string."

"$ tegese substring kudu kalebu mburi string."

"Iki sawetara conto:"

Pola String lan substrings sing cocog karo pola
a{3} aaa  a  aaa  aaa  _
a{3}$ aaa a aaa  aaa
^a{3} aaa  a aaa aaa
^a{3}$ aaa a aaa aaa

"Lan siji liyane penting."

"Ing ekspresi reguler, karakter ing ngisor iki nduweni makna khusus: [ ] \ / ^ $ . | ? * + ( ) { }. Iki diarani karakter kontrol. Dadi, sampeyan ora bisa nggunakake mung ing strings."

"Kaya ing kode Jawa, dheweke kudu oncat. "Lan maneh kaya ing kode Jawa, karakter '\' digunakake kanggo iki."

"Yen kita pengin njlèntrèhaké string sing dumadi saka telung '?' karakter, kita ora bisa nulis '?{3}', amarga '?' minangka karakter kontrol. Kita kudu nindakake kaya iki: \?{3}. Yen kita pengin nggunakake karakter '\', kita kudu nulis '\\'."

"Oke, entuk."

"Lan saiki ana tidbit liyane sing menarik. Ing file kanthi kode Jawa, karakter '\' uga kudu uwal saka strings, amarga iku karakter kontrol."

"Mesthi."

"Dadi, yen sampeyan nyoba nemtokake ekspresi reguler Jawa ing senar, sampeyan kudu uwal saka karakter '\' kaping pindho."

"Iki contone:"

Aku pengin topeng sing cocog karo 'c:\anything'
Ing teori, ekspresi reguler kudu katon kaya mangkene:
siji karakter 'c',
titik dua,
garis miring terbalik,
titik, lan tanda bintang (kanggo nunjukake jumlah karakter). Aku nambah spasi kanggo nambah maca:
c : \ .*
Nanging karakter '\' lan '.' kudu oncat, supaya ekspresi reguler bakal katon kaya iki:
c :   \\ \. *
Utawa, tanpa spasi
c: \\ \. *
"Kita kudu duwe telung backslashes ing ekspresi reguler kita.
Tegese yen ing file Java ekspresi reguler bakal katon kaya iki:"
String regexp = "c: \\\\ \\. *";

"Wah! Wah. Saiki aku ngerti."

"Lan yen sampeyan mutusake kanggo nggali luwih jero, iki ana sawetara tautan sing apik:"

Pawulangan ing Wikipedia