regex

Autres langues

Langue: ja

Version: 1998-05-08 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

regcomp, regexec, regerror, regfree - POSIX regex ´Ø¿ô

½ñ¼°

#include <sys/types.h>
#include <regex.h>


u int regcomp(regex_t *preg, const char *regex, int cflags);
u int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
u size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);
void regfree(regex_t *preg);

ÀâÌÀ

POSIX regex ¥³¥ó¥Ñ¥¤¥ë

regcomp() ¤Ï¡¢Àµµ¬É½¸½¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢ regexec() ¤Ç¤Î¸¡º÷½èÍý¤ËŬ¹ç¤¹¤ë·ÁÂ֤ˤ¹¤ë¡£

regcomp() ¤Ï¥Ñ¥¿¡¼¥ó¤òµ­²±¤¹¤ë¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿ preg¡¢ ¥Ì¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó regex¡¢ ¤½¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤Î·Á¼°¤ò·è¤á¤ë¤¿¤á¤Î¥Õ¥é¥° cflag ¤ò°ú¿ô¤Ëȼ¤¦¡£

Á´¤Æ¤ÎÀµµ¬É½¸½¸¡º÷¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥Ñ¥¿¡¼¥ó¤Ë¤è¤Ã¤Æ¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤è¤Ã¤Æ¡¢ regexec() ¤Ë»ØÄꤹ¤ë¤Î¤Ï¡¢É¬¤º (regcomp() ¤Ë¤è¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿) ¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

cflags ¤Ë¤Ï°Ê²¼¤Ë¼¨¤¹Äê¿ô°ì¤Ä°Ê¾å¤Î¥Ó¥Ã¥È¤´¤È¤Î OR (bitwise-or) ¤ò»ØÄꤹ¤ë¡£

REG_EXTENDED
regex ¤Ë POSIX ³ÈÄ¥Àµµ¬É½¸½¤ò»ÈÍѤ¹¤ë¡£¤â¤·¤³¤Î¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢ POSIX ɸ½àÀµµ¬É½¸½¤¬»È¤ï¤ì¤ë¡£
REG_ICASE
Âçʸ»ú¾®Ê¸»ú¤Î°ã¤¤¤ò̵»ë¤¹¤ë¡£¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿ ¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤òÍѤ¤¤Æ regexec() ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤òÉÕ¤±¤º¤Ë¸¡º÷¤¬¹Ô¤ï¤ì¤ë¡£
REG_NOSUB
¤³¤Î¥Õ¥é¥°¤òÀßÄꤷ¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤¬ regexec() ¤Î°ú¿ô¤Ë»ØÄꤵ¤ì¤ë¤È¡¢¥Ñ¥é¥á¡¼¥¿ nmatch, pmatch ¤¬Ìµ»ë¤µ¤ì¤ë¡£
REG_NEWLINE
Á´¤Æ¤Îʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ª¥Ú¥ì¡¼¥¿¤Ë²þ¹Ô¤ò¥Þ¥Ã¥Á¤µ¤»¤Ê¤¤¡£

²þ¹Ô¤ò´Þ¤Þ¤Ê¤¤Èó¥Þ¥Ã¥Á¥ó¥°Ê¸»ú¥ê¥¹¥È ([^...]) ¤Ë²þ¹Ô¤ò¥Þ¥Ã¥Á¤µ¤»¤Ê¤¤¡£

regexec() ¤Î¼Â¹Ô»þ¤Ë»ØÄꤹ¤ë¥Õ¥é¥° eflags ¤Ë REG_NOTBOL ¤ò´Þ¤à¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¹ÔƬ¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ª¥Ú¥ì¡¼¥¿ (^) ¤ò²þ¹Ôľ¸å¤Î¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¡£

eflags ¤Ë REG_NOTEOL ¤ò´Þ¤à¤«¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º¡¢¹ÔËö¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ª¥Ú¥ì¡¼¥¿ ($) ¤ò²þ¹ÔľÁ°¤Î¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¡£

POSIX regex ¥Þ¥Ã¥Á¥ó¥°

regexec() ¤Ï¡¢ ¥×¥ê¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡ preg ¤ò¥Ì¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¡£ nmatch ¤È pmatch ¤Ï¥Þ¥Ã¥Á¥ó¥°¤Î°ÌÃ֤˴ؤ¹¤ë¾ðÊó¤ò¼èÆÀ¤¹¤ë¤Î¤ËÍѤ¤¤é¤ì¤ë¡£ eflags ¤Ë¤Ï REG_NOTBOL ¤È REG_NOTEOL ¤Î¤É¤Á¤é¤«¡¢¤â¤·¤¯¤ÏξÊý¤Î¥Ó¥Ã¥È¤´¤È¤Î OR (bitwise-or) ¤ò»ØÄꤷ¡¢°Ê²¼¤ÇÀâÌÀ¤¹¤ë¤è¤¦¤Ë¥Þ¥Ã¥Á¥ó¥°Æ°ºî¤òÊѲ½¤µ¤»¤ë¡£
REG_NOTBOL
¹ÔƬ¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ª¥Ú¥ì¡¼¥¿¤Ï¡¢É¬¤º¥Þ¥Ã¥Á¤Ë¼ºÇÔ¤¹¤ë (¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥Õ¥é¥° REG_NEWLINE ¤Î¹àÌܤ⻲¾È)¡£ ¤³¤Î¥Õ¥é¥°¤Ï¡¢Ê£¿ô¹Ô¤Ë¤Þ¤¿¤¬¤ëʸ»úÎó¤ò regexec() ¤Ç¸¡º÷¤¹¤ëºÝ¤Ë¡¢Ê¸»úÎó¤ÎÀèƬ¤ò¹Ô¤ÎÀèƬ¤È¤·¤Æ²ò¼á¤µ¤»¤Ê¤¤¾ì¹ç¤ËÍѤ¤¤ë¡£
REG_NOTEOL
¹ÔËö¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ª¥Ú¥ì¡¼¥¿¤Ï¡¢É¬¤º¥Þ¥Ã¥Á¤Ë¼ºÇÔ¤¹¤ë (¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥Õ¥é¥° REG_NEWLINE ¤Î¹àÌܤ⻲¾È)¡£

¥Ð¥¤¥È¥ª¥Õ¥»¥Ã¥È

¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤Ë REG_NOSUB ¤¬ÀßÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢Éôʬʸ»úÎó¤Î¥Þ¥Ã¥Á¥ó¥°°ÌÃÖ¾ðÊó¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ pmatch ¤Ï¡¢¾¯¤Ê¤¯¤È¤â nmatch ¤ÎÂ礭¤µ¤ò»ý¤Ä¤è¤¦¤Ë»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ regexec() ¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æ¡¢¤½¤ì¤é¤ËÉôʬʸ»úÎó¥Þ¥Ã¥Á¥ó¥°°ÌÃÖ¾ðÊó¤¬ÂåÆþ¤µ¤ì¤ë¡£ ̤»ÈÍѤι½Â¤ÂÎÍ×ÁÇ¤Ë¤Ï -1 ¤¬ÃͤȤ·¤ÆÂåÆþ¤µ¤ì¤ë¡£

pmatch ¤Î·¿¤Ç¤¢¤ë regmatch_t ¹½Â¤ÂΤϡ¢ regex.h Æâ¤ÇÄêµÁ¤µ¤ì¤ë¡£

typedef struct
{
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;

¹½Â¤ÂÎÍ×ÁÇ rm_so ¤ÎÃͤ¬ -1 ¤Ç¤Ê¤¤¾ì¹ç¡¢¤½¤ì¤Ïʸ»úÎóÆâ¤Ç¤Î¼¡¤ÎºÇÂç¤Î¥Þ¥Ã¥Á¥ó¥°Éôʬ¤Î³«»Ï ¥ª¥Õ¥»¥Ã¥È°ÌÃÖ¤ò¼¨¤¹¡£¤½¤ì¤ËÂФ·¡¢¹½Â¤ÂÎÍ×ÁÇ rm_eo ¤Ï¥Þ¥Ã¥Á¥ó¥°Éôʬ¤Î½ªÎ»¥ª¥Õ¥»¥Ã¥È°ÌÃÖ¤ò¼¨¤¹¡£

POSIX ¥¨¥é¡¼¥ì¥Ý¡¼¥È

regerror() ¤Ï¡¢ regcomp() ¤È regexec() ¤Î¼Â¹Ô¤Ë¤è¤Ã¤ÆÆÀ¤é¤ì¤ë¥¨¥é¡¼¥³¡¼¥É¤«¤é¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸Ê¸»úÎó¤ò ÆÀ¤ë¤Î¤ËÍѤ¤¤é¤ì¤ë¡£

regerror() ¤Ï¥¨¥é¡¼¥³¡¼¥É errcode¡¢ ¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡ preg¡¢ ʸ»úÎó¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿ errbuf¡¢ ʸ»úÎó¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º errbuf_size ¤ò°ú¿ô¤Ë¤È¤ë¡£ ¤³¤Î´Ø¿ô¤Ï¡¢¥Ì¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤¿¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸Ê¸»úÎó¤ò³ÊǼ¤¹¤ë¤Î¤ËɬÍ×¤Ê errbuf ¤Î¥µ¥¤¥º¤òÊÖ¤¹¡£¤â¤· errbuf ¤È errbuf_size ¤ÎξÊý¤¬Èó 0 ÃͤǤ¢¤ì¤Ð¡¢ errbuf ¤Ë¤ÏºÇ½é¤Î errbuf_size - 1 ʸ»úʬ¤Ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È½ªÃ¼¤Î¥Ì¥ëʸ»ú¤¬¼ý¤Þ¤ë¤è¤¦¤ËÂåÆþ¤µ¤ì¤ë¡£

POSIX ¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡²òÊü

°ú¿ô¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡ preg ¤òÍ¿¤¨¤Æ regfree() ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢ regcomp() ¤Ë¤è¤ë¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤¬²òÊü¤µ¤ì¤ë¡£

ÊÖ¤êÃÍ

regcomp() ¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤ÎÀ®¸ù»þ¤Ë¤Ï 0 ¤òÊÖ¤·¡¢¼ºÇÔ»þ¤Ë¤Ï¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤¹¡£

regexec() ¤Ï¡¢¥Þ¥Ã¥Á¥ó¥°¤ÎÀ®¸ù»þ¤Ë¤Ï 0 ¤òÊÖ¤·¡¢¼ºÇÔ»þ¤Ë¤Ï REG_NOMATCH ¤òÊÖ¤¹¡£

¥¨¥é¡¼

regcomp() ¤Ï°Ê²¼¤Î¥¨¥é¡¼¤òÊÖ¤¹¡£
REG_BADBR
̵¸ú¤Ê¸åÊý»²¾È¥ª¥Ú¥ì¡¼¥¿¤Î»ÈÍÑ¡£
REG_BADPAT
¥°¥ë¡¼¥×¤ä¥ê¥¹¥È¤Ê¤É¤Î¡¢¥Ñ¥¿¡¼¥ó¥ª¥Ú¥ì¡¼¥¿¤Î̵¸ú¤Ê»ÈÍÑ¡£
REG_BADRPT
`*' ¤¬ºÇ½é¤Îʸ»ú¤È¤·¤Æ¤¯¤ë¤è¤¦¤Ê¡¢Ìµ¸ú¤Ê·«¤êÊÖ¤·¥ª¥Ú¥ì¡¼¥¿¤Î»ÈÍÑ¡£
REG_EBRACE
¥¤¥ó¥¿¡¼¥Ð¥ë¥ª¥Ú¥ì¡¼¥¿ {} (brace interval operators) ¤¬ÊĤ¸¤Æ¤¤¤Ê¤¤¡£
REG_EBRACK
¥ê¥¹¥È¥ª¥Ú¥ì¡¼¥¿ [] (bracket list operators) ¤¬ÊĤ¸¤Æ¤¤¤Ê¤¤¡£
REG_ECOLLATE
¾È¹ç½ç½ø¤ÎÍ×ÁÇ (collating element) ¤È¤·¤ÆÍ­¸ú¤Ç¤Ï¤Ê¤¤¡£

(ÌõÃí) ¾È¹ç½ç½ø¤ÎÍ×ÁÇ (collating element) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ regex(7) ¤ò»²¾È¡£

REG_ECTYPE
̤ÃΤΥ­¥ã¥é¥¯¥¿¥¯¥é¥¹Ì¾¡£
REG_EEND
̤ÄêµÁ¥¨¥é¡¼¡£¤³¤ì¤Ï POSIX.2 ¤Ë¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
REG_EESCAPE
Àµµ¬É½¸½¤¬¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç½ª¤Ã¤Æ¤¤¤ë¡£

(ÌõÃí) ÆüËܸì´Ä¶­¤Î¾ì¹ç¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤È¤Ê¤ë¤Ù¤­½ê¤¬±ßµ­¹æ¤Ç ɽ¼¨¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¤¬¡¢¤³¤ì¤Ïñ¤Ëɽ¼¨¥Õ¥©¥ó¥È¤ÎÌäÂê¤Ç¡¢ ÆâÉôŪ¤Ë¤ÏƱ¤¸°ÕÌ£¤Ç¤¢¤ë¡£

REG_EPAREN
¥°¥ë¡¼¥×¥ª¥Ú¥ì¡¼¥¿ () (parenthesis group operators) ¤¬ÊĤ¸¤Æ¤¤¤Ê¤¤¡£
REG_ERANGE
̵¸ú¤ÊÈÏ°Ï¥ª¥Ú¥ì¡¼¥¿¤Î»ÈÍÑ¡£ Î㤨¤Ð¡¢ÈϰϤνªÎ»°ÌÃÖ¤¬³«»Ï°ÌÃÖ¤è¤ê¤âÁ°¤Ë¤¢¤ë¤è¤¦¤Ê¾ì¹ç¡£
REG_ESIZE
Àµµ¬É½¸½¤Î¥³¥ó¥Ñ¥¤¥ë¤Ë¡¢64Kb °Ê¾å¤Î¥Ñ¥¿¡¼¥ó¥Ð¥Ã¥Õ¥¡¤¬É¬Íס£ ¤³¤ì¤Ï POSIX.2 ¤Ë¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
REG_ESPACE
regex ¥ë¡¼¥Á¥ó¤¬¥á¥â¥ê¤ò»È¤¤¤Ï¤¿¤·¤Æ¤¤¤ë¡£
REG_ESUBREG
¥µ¥Ö¥¨¥¯¥¹¥×¥ì¥Ã¥·¥ç¥ó \(...\) (subexpression) ¤Ø¤Î̵¸ú¤Ê¸åÊý»²¾È¡£

½àµò

POSIX.1-2001.

´ØÏ¢¹àÌÜ

grep(1), regex(7), GNU regex ¥Þ¥Ë¥å¥¢¥ë