Per 2016, RMID pindah ke RMID Discord (Invite link dihapus untuk mencegah spambot -Theo @ 2019). Posting sudah tidak bisa dilakukan lagi.
Mohon maaf atas ketidaknyamanannya dan mohon kerjasamanya.

Share | 
 

 [Script]REGEXP Share Info

Topik sebelumnya Topik selanjutnya Go down 
[Script]REGEXP Share Info Empty2012-09-24, 04:11
Post[Script]REGEXP Share Info
#1
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
Sebelumnya aku mau minta maaf jika salah postingan. Mohon dipindahkan ketempat seharusnya bilamana terjadi kesalahan. terima kasih.

Disini daku mau berbagi pengetahuan kepada teman - teman tentang regexp, jika ada yang kurang mohon ditambahkan.



REGEXP



Setahu aku REGEXP itu adalah salah satu fungsi dari bahasa pemrograman untuk membaca string, dan untuk saat ini yang aku tahu adalah REGEXP ruby. Jika terjadi kesalahan dalam pemberi informasinya mohon diberitahu ya....


Reader

\w
membaca angka dan huruf.fungsi ini sama dengan [0-9A-Za-z_].

\W
membaca selain angka dan huruf.

\s
membaca spasi.

\S
membaca non-spasi. dengan kata lain huruf dan angka serta spesial karakter akan di katergorikan ke dalam \S.

\d
membaca angka. sama seperti [0-9].

\D
membaca non-angka. dengan kata lain huruf dan spesial karakter
akan di kategorikan ke dalam \D.

Condition

\A
terbaca bila awal dari string berisi huruf/angka/spesial karakter setelah tanda \A.

\z
terbaca bila akhir dari string berisi huruf/angka/spesial karakter
sebelum tanda \z.

^
terbaca bila awal dari baris terdiri dari huruf/angka/spesial karakter setelah tanda ^.

$
terbaca bila akhir dari baris terdiri dari huruf/angka/spesial karakter sebelum tanda $.

Repeater

*
mengulang pembacaan huruf/angka/spesial karakter/regexp sebelum tanda * minimal 0 kali.

+
mengulang pembacaan huruf/angka/spesial karakter/regexp sebelum tanda + minimal 1 kali.

{x}
mengulang pembacaan huruf/angka/spesial karakter/regexp sebelum tanda {x} sebanyak x kali.

{x,}
mengulang pembacaan huruf/angka/spesial karakter/regexp sebelum tanda {x} sebanyak x kali atau lebih.

{x,y}
mengulang pembacaan huruf/angka/spesial karakter/regexp
sebelum tanda {x} sebanyak x kali minimal y kali.

Grup

[]
range pembacaan

[ ]
membaca 1 spasi.

[0-9]
membaca nilai 0 hingga 9.

[a-z]
membaca huruf a hingga z.

[A-Z]
membaca huruf A hingga Z.

Target

()
semua yang ada didalam kurung akan di isikan ke backreference ($1, $2,...)

(?: )
semua yang ada didalamnya tidak akan di isikan ke back reference

Contoh:
@a = "aku suka rpgmakerid"
@b = /aku\s*\w+\s*(\w+)/
p @a =~ @b
=> aku suka rpgmakerid
p $1
=> rpgmakerid


@a = "aku suka rpgmakerid"
@b = /aku\s*\w\s*(\w+)/
p @a=~@b
=> aku suka
p $1
=> uka

nah sekian dari aku, bagaimana dengan kalian. semoga membantu....
[Script]REGEXP Share Info Empty2012-09-24, 04:27
PostRe: [Script]REGEXP Share Info
#2
Rian01 
Advance
Advance
avatar

Level 5
Posts : 318
Thanked : 0
Engine : RMVX Ace
Skill : Beginner
Awards:
[Script]REGEXP Share Info Vide
kayaknya ini penting buat belajar :lol:
tapi sumpah saya bingung ... bisa dijelasin pake contoh yang sering dipakai orang gk ??
[Script]REGEXP Share Info Empty2012-09-24, 08:57
PostRe: [Script]REGEXP Share Info
#3
ashm 
Veteran
Veteran
ashm

Level 5
Posts : 1131
Thanked : 8
Engine : RMVX Ace
Skill : Intermediate
Type : Event Designer
Awards:

[Script]REGEXP Share Info Vide
Itu tuh yg dicontoh kayak utk baca notetag ya.

Ane emang gak ngerti ruby sih, tapi kayaknya pernah denger REGEXP jadi penasaran aja.
[Script]REGEXP Share Info Empty2012-09-24, 11:53
PostRe: [Script]REGEXP Share Info
#4
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
@rian : mungkin kalo kamu make script aku atau script apapun yang menggunakan note tag, alias mengisi tulisan pada note database agar scriptnya berjalan, kamu akan tahu. Contoh, kamu buat script seperti ini(aku menggunakan RMVXA):

Code:

REGEXP = /<param\s*(\d+)\s*:\s*(\d+)>/  #<== ini variable regexp nya

class RPG::Weapon < RPG::EquipItem #<==regexp akan membaca di database weapon
@param_add = [0] * 8
def scan_test_regexp #<==membuat method untuk pembacaan regexp
self.note.split(/\r\n/).each {|line| #<==perintah  untuk membaca tiap bari pada note weapon
if line =~ REGXP j#<==jika salah satu baris pada note weapon cocok dengan variabel REGEXP
@param_add[$1.to_i] = $2.to_i #jika ada kecocokan antara baris note weapon dan REGEXP akan menghasilkan
                                                    dua back reference yaitu $1 dan $2, karena terdapat dua grup () pada
                                                    REGEXP
end
end
def param(param_id)
scan_test if @param_add.nil?
return @param[param_id[ + @param_add[param_id]
end
end
jika kamu lihat script diatas, kamu bisa tahu bahwa kita sedang mencocokkan isi note pada weapon dengan isi REGEXP. cara bacanya gimana ?
Regexp si selalu diawali dan di akhiri dengan tanda "/" tanpa tanda kutip.

REGEXP = /<param\s*(\d+)\s*:\s*(\d+)>/

Berarti regexp mulai membaca dari <param\s*(\d+)\s*:\s*(\d+)>, mari kita bagi pembacaannya:
<param : regexp akan membaca yang berawalan dengan tulisan tersebut.
\s* : setelah tanda <param regexp memperbolehkan jika kita mengetik ada atau tidak ada spasi sebanyak berapapun.
(\d+) : regexp akan membaca semua angka setelah tanda spasi tadi dan di nilai yang kita ketik akan di masukkan ke dalam $1. karena kita menggunakan tanda \d jadi dia hanya membaca angka.
\s* : setelah angka yang kita masukkan kita diperbolehkan memberikan atau tidak spasi pada note weapon.
":" : setelah spasi regexp harus di ikuti dengan tanda ":".
\s* : setelah tanda spasi regexp kembali memperbolehkan kita untuk memberikan spasi atau tidak.
(\d+) : sekali lagi setelah tanda spasi semua angka yang kita ketik akan di masukkan ke $2 .karena ini bentuk kecocokan grup yang kedua .
dan terakhir sesuah angka harus ditutup dengan tanda ">".

Kesimpulannya cara pembacaan diatas adalah
<param [spasi/tidak] [angka $1] [spasi/tidak] : [spasi/tidak] [angka $2]>
jika di note weapon kita ketik:
<param 20 : 300>
maka akan terjadi kecocokan dan nilai 20 akan di setor ke $1 dan 300 akan disetor ke $2.
bagaimana jika
<param20:300>
sama saja karena kita memberikan perintah \s* jadi mau pake spasi atau ga, ya ga masalah.
kalau kita isi
<parampa 20:300>
maka tidak terjadi apa - apa, karena kita tidak memasukkan kata parampa, melainkan param


Terakhir diubah oleh yeki tanggal 2012-09-25, 01:54, total 1 kali diubah
[Script]REGEXP Share Info Empty2012-09-24, 13:23
PostRe: [Script]REGEXP Share Info
#5
DrDhoom 
Doomed Zombie
DrDhoom

Level 5
Posts : 629
Thanked : 22
Engine : Multi-Engine User
Skill : Intermediate
Type : Scripter

[Script]REGEXP Share Info Vide
really useful! =w=b
dari dulu gw bingung masalah ini, makanya jarang make :fa:
[Script]REGEXP Share Info Empty2012-09-24, 16:31
PostRe: [Script]REGEXP Share Info
#6
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
iya dulu juga saya sempet bingung ( sampe sekarang juga :hammer: ) apa lagi semenjak RMVX Ace ga support
command p lagi alias Print display. mesti ngecek satu2 via $game_message.

berhubung aku baru tahu beberapa jadi aku berbagi aja sapa tau yang lain bisa ikut berbagi. Jika ada kebingungan silahkan ditanyakan.
[Script]REGEXP Share Info Empty2012-09-24, 17:00
PostRe: [Script]REGEXP Share Info
#7
Kuro Ethernite 
The Creator
Kuro Ethernite

Level 5
Posts : 1631
Thanked : 24
Engine : RMVX Ace
Skill : Masterful
Type : Jack of All Trades
Awards:

[Script]REGEXP Share Info Vide
Ga pernah nyentuh :hmm:
. . . .
klo brurusan ama string mode advanced pling yg q pake hanya (apa lagi tuh namanya :hammer: ) yang fungsinya motong sekian karakter, dsb :v
[Script]REGEXP Share Info Empty2012-09-24, 18:18
PostRe: [Script]REGEXP Share Info
#8
Rian01 
Advance
Advance
avatar

Level 5
Posts : 318
Thanked : 0
Engine : RMVX Ace
Skill : Beginner
Awards:
[Script]REGEXP Share Info Vide
@yeki kalo ini gunanya untuk apa ??
Code:

self.note.split(/\r\n).split {|line|

saya agak bingung soal (/\r\n) dan {|line| :hammer:
terima kasih penjelasannya jadi lebih paham sekarang
[Script]REGEXP Share Info Empty2012-09-24, 21:36
PostRe: [Script]REGEXP Share Info
#9
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
mungkin lebih benar penulisannya adalah:

self.note.split(/\r\n/).each {|line| expresion }

kita bahas satu2 ya:

self
membaca dirinya sendiri, dengan kata lain coba kamu lihat class apa yang digunakan. Apakah RPG::Actor, RPG::EquipItem, intinya berbentuk class. kita ambil saja ternyata RPG::Weapon. berarti kita anggap kita sedang membaca database weapon.

note
kurasa sudah jelas disini kita ingin membaca note weapon database.

split
membagi isi note yang bagaikan notepad atau word dengan ketentuan

\r\n
membagi isi note berdasarkan baris jadi pembacaannya berdasarkan perbaris.
mungkin kalo dalam bahasa manusia \r = potong \n = perbaris. kalau digabung \r\n = potong perbaris.

each
perintah untuk melakukan pembacaan sesuai split(/\r\n/).

|line|
variable penampung isi perbaris yang telah kita potong tadi.

jadi kalau digabung.

self.note.split(/\r\n/).each {|line| = jalankan pemotongan note RPG::Weapon dengan hasil pemotongan di simpan ke variable line

sekian penjelasan dari ku maaf jika ada salah kata mohon dibenarkan
[Script]REGEXP Share Info Empty2012-09-25, 18:15
PostRe: [Script]REGEXP Share Info
Rian01 
Advance
Advance
avatar

Level 5
Posts : 318
Thanked : 0
Engine : RMVX Ace
Skill : Beginner
Awards:
[Script]REGEXP Share Info Vide
@kk YQ
duh maap merepotkan :hammer:
kalo saya liat first tread saya malah bingung sendiri :hammer:

tolong kasih contoh

misal : saya mau ngasih di notetag code
Code:

item<x>
x adalah variabel yang akan disimpan caranya gimana ??
[Script]REGEXP Share Info Empty2012-09-25, 23:13
PostRe: [Script]REGEXP Share Info
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
item<x> berarti format regexpnya adalah

/item<(\d+)>/i

dimana x nanti harus berupa angka.

contoh scriptnya:
Code:

class RPG::Armor < RPG::EquipItem
def baca_note
@dasar = 0
self.note.split(/\r\n/).each {|line|
if line =~ /item<(\d+)/i
@dasar = $1.to_i
end }
end

def dasar
baca_note if @dasar.nil?
return @dasar
end

end


dengan begini kamu telah membuat method baru dari $data_armors. contoh pada database armor pertama kamu isi note:

item<10>

maka jika kamu panggil $data_armors[1].dasar maka akan muncul nilai 10, tapi jika kamu panggil $data_armors[22].dasar akan muncul nilai 0, karena di database armor urutan ke 10 tidak kamu isikan note tadi
[Script]REGEXP Share Info Empty2012-09-26, 04:42
PostRe: [Script]REGEXP Share Info
Rian01 
Advance
Advance
avatar

Level 5
Posts : 318
Thanked : 0
Engine : RMVX Ace
Skill : Beginner
Awards:
[Script]REGEXP Share Info Vide
maaf nanya lagi :hammer:
berarti jika saya mau buat variabel yang nilainya = x

Code:

point = self.dasar

berarti jika saya nulis item<20>
maka point = 20 ??


Terakhir diubah oleh Rian01 tanggal 2012-09-26, 05:07, total 1 kali diubah (Reason for editing : Remove OOT)
[Script]REGEXP Share Info Empty2012-09-26, 22:26
PostRe: [Script]REGEXP Share Info
yeki 
Novice
Novice
yeki

Level 5
Posts : 182
Thanked : 6
Engine : RMVX Ace
Skill : Beginner
Type : Scripter
Awards:

[Script]REGEXP Share Info Vide
benar sekali kurang lebih seperti itu, tapi perintahnya jgn

Code:

poin = self.dasar

nanti bakal eror kalo di panggil di luar class RPG::Weapon (kalo sesuai contoh)...

kalo mau dipanggil

Code:

poin = $data_weapons[id].dasar

id = urutan weapon pada database
[Script]REGEXP Share Info Empty
PostRe: [Script]REGEXP Share Info
Sponsored content 




[Script]REGEXP Share Info Vide
 

[Script]REGEXP Share Info

Topik sebelumnya Topik selanjutnya Kembali Ke Atas 

Similar topics

+
Halaman 1 dari 1

Permissions in this forum:Anda tidak dapat menjawab topik
RPGMakerID :: Creative Commons :: Tutorials-