JavaRush /Blog Jawa /Random-JV /Dhasare basa Jawa. Bagean 3
articles
tingkat

Dhasare basa Jawa. Bagean 3

Diterbitake ing grup
Ayo nerusake sinau babagan ekspresi reguler. Ing artikel iki kita bakal nliti kelas karakter sing wis ditemtokake uga kuantifikasi (nelusuri urutan). Dhasare basa Jawa.  Bagean 3 - 1

Kelas Karakter sing wis ditemtokake

API kelas Patternngemot kelas karakter sing wis ditemtokake sing nawakake trabasan sing trep kanggo ekspresi reguler sing umum digunakake. Dhasare basa Jawa.  Bagean 3 - 2Ing tabel iki, konstruksi ing kolom kiwa minangka representasi singkatan saka ekspresi ing kolom tengen. Contone, \dtegese nomer (0-9), \wtegese huruf gedhe utawa cilik, garis ngisor utawa nomer). Gunakake kelas karakter sing wis ditemtokake yen bisa. Iki bakal nggawe kode luwih gampang diwaca lan ndandani kesalahan. Konstruksi sing diwiwiti kanthi backslash diarani lolos utawa dilindhungi. Ing artikel sadurunge, kita wis ngomong babagan uwal karakter khusus kanthi garis miring utawa simbol \Qlan \Edigunakake minangka karakter biasa. Yen sampeyan nggunakake backslash karo karakter biasa (aksara), sampeyan kudu uwal backslash kanggo ekspresi kanggo kompilasi.
private final String REGEX = "\\d"; // цифра
Ing conto iki \d, ekspresi biasa; backslash tambahan perlu kanggo program kanggo ngumpulake. Program tes kita maca ekspresi reguler langsung saka konsol, mula ora ana garis miring tambahan sing dibutuhake. Conto ing ngisor iki nduduhake panggunaan kelas karakter sing wis ditemtokake: Dhasare basa Jawa.  Bagean 3 - 3Dhasare basa Jawa.  Bagean 3 - 4Ing telung conto pisanan, ekspresi reguler mung " ." (karakter khusus titik), sing tegese karakter apa wae. Mulane, panelusuran sukses ing kabeh kasus. Conto liyane nggunakake kelas karakter sing wis ditemtokake, makna sing kita rembugan ing tabel ing ndhuwur.

Quantifiers

Dhasare basa Jawa.  Bagean 3 - 4Quantifiers ngidini sampeyan nemtokake jumlah kedadeyan karakter ing senar. Ayo dideleng kanthi luwih rinci babagan cara kerja kuantifier sing rakus, kesed, lan rakus banget. Sepisanan, bisa uga koyone pengukur X?, X?? lan X?+ dianggo kanthi cara sing padha: "X ana sepisan utawa ora kabeh." Ana bedane tipis ing implementasine quantifier kasebut, sing bakal kita deleng ing ngisor iki.

Nul dawa cocog

Ayo miwiti karo sing rakus. Ayo nulis telung ekspresi reguler sing beda: huruf "a" kanthi karakter khusus ?, * utawa +. Ayo ndeleng apa sing kedadeyan yen kita nyoba ekspresi reguler iki ing baris kosong: Dhasare basa Jawa.  Bagean 3 - 5Ing conto ing ndhuwur, telusuran sukses ing rong kasus pisanan, amarga ekspresi a? lan * ngidini karakter a ilang saka senar. Uga elinga yen indeks pertandhingan wiwitan lan pungkasan padha (0). Wiwit senar input ora dawa, program ora nemokake apa-apa :) ing posisi pisanan. Kasus iki diarani pertandhingan dawa nol. Pertandhingan kasebut dumadi ing sawetara kasus: nalika baris input kosong, ing wiwitan baris input, sawise karakter pungkasan baris, utawa ing antarane karakter ing baris. Pertandhingan dawa nol gampang ditemokake: diwiwiti lan diakhiri ing posisi sing padha. Ayo katon ing sawetara conto liyane saka cocog zero-dawa. Ayo njelajah pertandhingan dawa nol kanthi sawetara conto liyane. Ayo ngganti senar input kanggo karakter "a" lan mirsani efek menarik: Dhasare basa Jawa.  Bagean 3 - 6Kabeh telu quantifiers nemokake karakter "a", nanging loro pisanan, sing ngidini kanggo anané karakter, nemokake match nul-dawa ing posisi 1 - sawise karakter pungkasan saka senar. Iki kedadeyan amarga program nganggep karakter "a" minangka senar lan "mlaku" liwat nganti ora ana sing cocog maneh. Gumantung ing quantifier digunakake, program bakal utawa ora nemokake "apa-apa" ing mburi senar. Saiki ayo kang ngganti senar input kanggo urutan limang aksara "a": Dhasare basa Jawa.  Bagean 3 - 7expression biasa a? nemokake cocog kanggo saben aksara ing senar kapisah. Ekspresi a* nemokake loro sing cocog: urutan karakter "a"' lan cocog nol-dawa ing posisi 5. Lan pungkasanipun, expression biasa a + nemokake mung urutan karakter "a", tanpa golek "apa-apa" :) Apa bakal kelakon yen senar ngemot karakter beda diwenehi minangka input? Contone, "ababaaaab": Dhasare basa Jawa.  Bagean 3 - 8Karakter "b" ana ing posisi 1, 3, lan 8 lan program kasebut nemokake sing cocog karo nol-dawa ing posisi kasebut. Ekspresi biasa a? ora nggatekake "b", nanging mung nggoleki anane (utawa ora ana) karakter "a". Yen quantifier ngidini ora ana "a", kabeh karakter ing senar liyane saka "a" bakal ditampilake minangka match nul-dawa. Kanggo nemokake urutan dawa tartamtu, cukup nemtokake dawa ing kurung kriting: Dhasare basa Jawa.  Bagean 3 - 9Ekspresi reguler a{3} nggoleki urutan telung karakter "a". Ora ana sing ditemokake ing baris pisanan amarga ora cukup a ing baris kasebut. Kapindho ngemot 3 karakter, sing ditemokake program kasebut. Tes katelu uga nemokake pertandhingan ing wiwitan senar. Kabeh sawise karakter 3rd ora gawe marem expression biasa, ing kode ing ngisor iki lan bakal ana sawetara cocog: Dhasare basa Jawa.  Bagean 3 - 10Kanggo nemtokake dawa urutan minimal, gunakake:
Enter your regex: a{3,}
Enter input string to search: aaaaaaaaa
I found the text "aaaaaaaaa" starting at index 0 and ending at index 9.
Ing conto iki, program nemokake mung siji cocog amarga senar meets syarat minimal dawa urutan (3) "a" karakter. Akhire, nyetel dawa urutan maksimum: Dhasare basa Jawa.  Bagean 3 - 11Ing conto iki, pertandhingan pisanan rampung ing karakter enem. Pertandhingan kapindho ngemot karakter sawise sing kaping enem, amarga padha gawe marem requirement dawa minimal. Yen string luwih cendhek siji karakter, ora bakal ana sing cocog liyane.

Nggunakake klompok karakter lan kelas karo quantifiers

Nganti titik iki, kita wis dites quantifiers ing strings ngemot karakter padha. Quantifiers mung ditrapake kanggo karakter siji, supaya expression biasa "abc+" bakal cocog strings ngemot "ab" lan "c" siji utawa luwih. Iku ora ateges "abc" kaping siji utawa luwih. Nanging pangukuran bisa digunakake bebarengan karo klompok lan kelas karakter, kayata [abc]+ (a utawa b utawa c, siji utawa luwih) utawa (abc)+ ("abc" siji utawa luwih). Ayo golek klompok karakter (asu), kaping telu ing baris: Dhasare basa Jawa.  Bagean 3 - 12Ing conto pisanan, program nemokake sing cocog, amarga quantifier ngluwihi kanggo klompok karakter. Yen sampeyan mbusak tanda kurung, pangukuran {3} mung ditrapake kanggo huruf "g". Sampeyan uga bisa nggunakake quantifier karo kelas karakter: Dhasare basa Jawa.  Bagean 3 - 13{3} quantifier ditrapake kanggo kelas karakter ing kurung ing conto pisanan, lan ing kaloro - mung kanggo karakter "c".

Bedane antarane srakah, kesed lan over-rakus quantifiers

Ana bedane tipis antarane srakah, wegah, lan posesif quantifiers. Pengukuran rakus dijenengi amarga padha nyoba nemokake match sing paling dawa: program pisanan nyoba "mangan" kabeh senar, yen cocog ora ditemokake, banjur siji karakter dibuwang lan telusuran diulang nganti cocog ditemokake utawa ora ana karakter liyane. Wong kesed, ing tangan liyane, miwiti ing awal baris, nambah karakter sawise karakter nganti padha nemokake match. Pungkasan, kuantifikasi cemburu mindai kabeh senar sapisan, tanpa mbusak karakter kaya ing rakus. Kanggo demonstrasi, kita bakal nggunakake string xfooxxxxxxfoo. Dhasare basa Jawa.  Bagean 3 - 14Conto pisanan nggunakake kuantifier .* rakus kanggo nemokake karakter apa wae, kaping 0 utawa luwih, banjur aksara "f" "o" "o". Wiwit cantifier iku rakus, cocog sing ditemokake ngemot kabeh string. A quantifier rakus ora bakal nemokake kabeh cocog ing senar amarga ing langkah pisanan, sawise mindhai kabeh senar, bakal nemokake match lan rampung proyek. Conto kapindho yaiku kesed lan diwiwiti saka wiwitan baris, nambahake karakter kanthi karakter. Program kasebut diwiwiti kanthi mriksa "kosong", nanging wiwit urutan "foo" ora ana ing wiwitan baris, telusuran terus kanthi tambahan karakter "x", sawise sing cocog pisanan bakal ditemokake ing antarane indeks 0 lan 4. Panelusuran terus nganti pungkasan baris. lan pertandhingan kapindho bakal ditemokake ing antarane indeks 4 lan 13. Tuladha katelu ora nemokake kebetulan amarga pengukur meri. Ing kasus iki, ekspresi reguler .*+ "mangan" kabeh baris, ora ninggalake apa-apa kanggo "foo". Gunakake quantifier cemburu yen sampeyan kudu mbuwang apa wae sing ora perlu ing senar, bakal luwih efektif tinimbang quantifier rakus sing padha. Iku kabeh! Pranala menyang sumber: Dhasar ekspresi reguler ing basa Jawa. Bagean 3
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION