He he he.... Bung Yusron kurang teliti, ya,
dalam membaca source code regex yang dulu pernah saya
posting.
Saya tidak akan memposting ulang source nya,
tetapi kalau ingin lagi, lewat japri saja.
Dalam source code saya, saya menggunakan
kurung untuk mengambil "submatch" seperti
problem yang dihadapi Mas Yusron sekarang.
Yaitu :
strcpy(regs,"a href\\s*=\\s*\"([^\"]*)\"");
^^^^^^^^
||||||||
Jelas, khan ?
Nah, gimana cara matching nya ?
Pertama, anda harus sediakan tempat regmatch yang cukup.
"PENYEDIAAN" regmatch :
1. Kalau tidak pakai submatch :
regmatch = (regmatch_t *) malloc (sizeof(regmatch_t));
2. Kalau pakai satu submatch :
regmatch = (regmatch_t *) malloc (sizeof(regmatch_t)*2);
3. Kalau pakai dua submatch (seperti problem
bung Yusron) :
regmatch = (regmatch_t *) malloc (sizeof(regmatch_t)*3);
Nah matching nya ada di mana ?
1. Untuk keseluruhan match :
ada di mulai dari posisi regmatch[0].rm_so
sampai posisi regmatch[0].rm_eo
2. untuk submatch pertama ada di :
regmatch[1].rm_so s/d regmatch[1].rm_eo
3. untuk submatch kedua ada di :
regmatch[2].rm_so s/d regmatch[2].rm_eo
Jadi kalau mau ambil submatch yang kedua,
caranya adalah :
strncpy(http_str,p+regmatch[2].rm_so,(regmatch[2].rm_eo - regmatch[2].rm_so));
atau pakai :
memcpy(http_str,p+regmatch[2].rm_so,(regmatch[2].rm_eo - regmatch[2].rm_so));
Jangan ragu untuk tanya lagi jika masih bingung.
Nanti kita bingung bersama-sama, he he he...
Nah, mudah-mudahan setelah anda membaca penjelasan
saya, anda dapat lebih mudah mencerna manual regex.
Hizazul Emkom.
HIMBAUAN:
Buat para Linux programmer yang pinter-pinter,
bagaimana jika kita hilangkan budaya asal response
"baca aja man/manualnya". Tidak semua orang dapat
dengan mudah mencerna manual yang ditulis dalam
bahasa Inggris. Tidak ada salahnya jika kita
memberi sedikit penjelasan/pancingan/program kecil sebelum
berkata "baca aja man/manualnya".
-----Original Message-----
From: "Yusron Hilmy" <[EMAIL PROTECTED]>
Date: Mon, 26 Jun 2000 17:26:42 +0700
To: "Linux Programming Milis" <[EMAIL PROTECTED]>
Subject: [programming] Regex pake C
> Saya perlu me-run regex berikut di C :
>
> Posted by\s*(.*?)\s+on\s+(.*?)</B>
>
> pake regcomp(), regexec(), regfree(). Masalahnya adalah bagaimana saya bisa
> mengambil dua bagian yang ada di tanda ().
>
> Ada yang mau membantu ???
>
>
> --------------------------------------------------------------------------------
> Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
> Informasi arsip di <A HREF="http://www.linux.or.id/milis.php3" TARGET="_new"><FONT
>COLOR="BLUE">http://www.linux.or.id/milis.php3</FONT></A>
> Pengelola dapat dihubungi lewat [EMAIL PROTECTED]
>
>
--
_____________________________________________________________
satusports.com, situs olahraga nomor satu dan terlengkap Indonesia.
Untuk informasi terakhir sepakbola, bolabasket, tinju, golf, dan olahraga lainnya,
kliklah http://www.satusports.com
Powered by OutBlaze
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]