Re: lug-bg: POSIX regex
- Subject: Re: lug-bg: POSIX regex
- From: Nikolay Mitev <nikolaym@xxxxxxxxxxxxxxxxxxx>
- Date: Thu, 18 Sep 2003 12:44:24 -0500
Здравейте,
peyo wrote:
Здрвасти отново. Аз днес май ми е ден да ми е накриво:((
Значи пиша едно софтуерче на С за Линукс, което ужасно ще ми облекчи живота.
Въпроса е, че е за доста слаба машина и най-читавият вариант е да се използва
С за целта + regex. Обаче въпросното regex е нещо, което се случва на други
хора. Та трябва да използвам POSIX regex functions - демек да се сгърча.
И не мога и не мога да измисля - като ми падне стринг, как да напиша regex-a
така, че да хване дали това е ИП адрес или не е. Само да ви кажа, че май тук
ne e kato v Perl regex. пробвам \d+.\d+\d+.\d+, (1-254).(1-254).(1-254).
(1-254) ама не...
Та може ли някои по-запознат да ми окаже HEEELP!?
10x in advance( да не си помислите, че не знам англически)
Направо цяла програмка получаваш :-)
---------8<--------cut here------------------
#include <regex.h>
/* returns 0 if string is a valid ip
> 0 otherwise
*/
int is_ip (const char *string) {
int status;
regex_t re;
const char *pattern =
"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}";
if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) {
return(0);
}
status = regexec(&re, string, (size_t) 0, NULL, 0);
regfree(&re);
if (status != 0) {
return(0);
}
return(1);
}
int main () {
int res = is_ip ("192.168.0.1");
printf ("Result is %d\n", res);
res = is_ip ("192.168.0");
printf ("Result is %d\n", res);
}
cheers,
face
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|