regex

Autres langues

Langue: ja

Version: 1994-02-07 (openSuse - 09/10/07)

Autres sections - même nom

Section: 7 (Divers)

̾Á°

regex - POSIX.2 Àµµ¬É½¸½

ÀâÌÀ

Àµµ¬É½¸½ (Regular expression: RE) ¤Ï POSIX.2 ¤ÇÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢ Æó¤Ä¤Î·Á¼°¤¬¤¢¤ë¡£¿·¤·¤¤Àµµ¬É½¸½ (modern RE) ¤È¸Å¤¤Àµµ¬É½¸½ (obsolete RE) ¤Ç¤¢¤ë¡£¿·¤·¤¤Àµµ¬É½¸½¤Ï¤À¤¤¤¿¤¤ egrep ¤Î¤â¤Î¤ÈƱ¤¸¤Ç¡¢ POSIX.2 ¤Ç¤Ï¡Ö³ÈÄ¥¡×Àµµ¬É½¸½ (``extended'' RE) ¤È¸Æ¤Ð¤ì¤Æ¤¤¤ë¡£¸Å¤¤Àµµ¬É½¸½¤Ï¤À¤¤¤¿¤¤ ed(1) ¤Î¤â¤Î¤ÈƱ¤¸¤Ç¡¢ POSIX.2 ¤Ç¤Ï¡Ö´ðËÜ¡×Àµµ¬É½¸½ (``basic'' RE) ¤Ç¤¢¤ë¡£ ¸Å¤¤Àµµ¬É½¸½¤Ï¡¢¸Å¤¤¥×¥í¥°¥é¥à¤È¤Î¸ß´¹À­¤òÊݤĤ¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤Ë¤Ä¤¤¤Æ¤ÏºÇ¸å¤ËµÄÏÀ¤¹¤ë¡£ POSIX.2 ¤Ç¤Ï¡¢Àµµ¬É½¸½¤Îʸˡ¤äµ­¹æ¤Î°ìÉô¤¬¡¢Ì¤ÄêµÁ¤Î¤Þ¤Þ»Ä¤µ¤ì¤Æ¤¤¤ë¡£ `(!)' ¤Ï¡¢¤³¤Î¤è¤¦¤Ê°ÕÌ£¤Ç¡¢Â¾¤Î POSIX.2 ¤Î¼ÂÁõ¤È ´°Á´¤Ë¤Ï¸ß´¹¤Ç¤Ê¤¤¤«¤âÃΤì¤Ê¤¤Éôʬ¤Ç¤¢¤ë¡£

(¿·¤·¤¤) Àµµ¬É½¸½¤Ï°ì¤Ä°Ê¾å(!) ¤Î¶õÇò¤Ç¤Ê¤¤ »Þ (branch) ¤«¤é¤Ê¤ë¡£ »Þ¤É¤¦¤·¤Ï `|' ¤Ç¶èÀÚ¤é¤ì¤ë¡£Àµµ¬É½¸½¤Ï¡¢ »Þ¤Î¤É¤ì¤«¤Ë¥Þ¥Ã¥Á (match) ¤·¤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

»Þ¤Ï°ì¤Ä°Ê¾å¤ÎʸÀá (piece) ¤¬·ë¹ç¤µ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£ »Þ¤ÏÂè°ì¤ÎʸÀ᤬¥Þ¥Ã¥Á¤·¡¢ ³¤¤¤ÆÂèÆó¤ÎʸÀ᤬¥Þ¥Ã¥Á¤·¡¢... ¤·¤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

ʸÀá¤Ï¥¢¥È¥à (atom) ¤«¤é¤Ê¤ë¡£¤¿¤À¤·¥¢¥È¥à¤Î¸å¤Ë¤Ï°ì¤Ä(!) ¤Î `*', `+', `?' ¤¢¤ë¤¤¤Ï ·«¤êÊÖ¤·»ØÄê (bound) ¤¬Â³¤¯¤³¤È¤â¤¢¤ë¡£ `*' ¤¬¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢¥Þ¥Ã¥Á¤·¤¿¥¢¥È¥à¤Î 0 ¸Ä°Ê¾å¤ÎʤӤ˥ޥåÁ¤¹¤ë¡£ `+' ¤¬¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢¥Þ¥Ã¥Á¤·¤¿¥¢¥È¥à¤Î 1 ¸Ä°Ê¾å¤ÎʤӤ˥ޥåÁ¤¹¤ë¡£ `?' ¤¬¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢¥Þ¥Ã¥Á¤·¤¿¥¢¥È¥à¤Î 0 ¸Ä¤Þ¤¿¤Ï 1 ¸Ä¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

·«¤êÊÖ¤·»ØÄê¤È¤Ï `{' ¤Ë³¤¤¤Æ¡¢Éä¹æ¤Ê¤· 10 ¿ÊÀ°¿ô¡¢ `,'¡¢ ¤â¤¦°ì¤Ä¤Î 10 ¿ÊÀ°¿ô¡¢ `}' ¤òʤ٤¿¤â¤Î¤Ç¤¢¤ë¡£ `,' ¤ÈÆó¤Ä¤á¤Î 10 ¿ÊÀ°¿ô¤Ï¾Êά¤Ç¤­¤ë¡£Æó¤Ä¤á¤Î 10 ¿ÊÀ°¿ô¤À¤±¤ò¾Êά¤¹¤ë¤³¤È¤â¤Ç¤­¤ë (ºÇ¸å¤Î `}' ¤Ï¾Êά¤Ç¤­¤Ê¤¤)¡£ À°¿ô¤Ï 0 °Ê¾å RE_DUP_MAX (255(!)) °Ê²¼¤Î´Ö¤Ç»ØÄê¤Ç¤­¤ë¡£ Æó¤Ä»ØÄꤹ¤ë¾ì¹ç¤Ë¤Ï¡¢ºÇ½é¤Î¿ôÃͤϸå¤Î¿ôÃͤò±Û¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ À°¿ô i ¤À¤±¤«¤é¤Ê¤ë·«¤êÊÖ¤·»ØÄê¤ò¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢ ¥¢¥È¥à¤ò¤Ô¤Ã¤¿¤ê¤Á¤ç¤¦¤É i ¸Ä¤À¤±Ê¤٤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ À°¿ô i ¤È¥³¥ó¥Þ¤¬»ØÄꤵ¤ì¤¿·«¤êÊÖ¤·»ØÄê¤ò¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢ ¥¢¥È¥à¤ò i¸Ä°Ê¾åʤ٤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ À°¿ô i ¤È j ¤¬»ØÄꤵ¤ì¤¿·«¤êÊÖ¤·»ØÄê¤ò¸åÃÖ¤µ¤ì¤¿¥¢¥È¥à¤Ï¡¢ ¥¢¥È¥à¤ò i¸Ä°Ê¾å j ¸Ä°Ê²¼¤À¤±Ê¤٤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

¥¢¥È¥à¤Î¼ïÎà¤Ï°Ê²¼¤ÎÄ̤ꡣ `()' ¤Ë°Ï¤Þ¤ì¤¿Àµµ¬É½¸½ (¤½¤ÎÀµµ¬É½¸½¤¬¥Þ¥Ã¥Á¤¹¤ëʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡¢ Ãæ¿È¤¬¶õ¤Î `()' (null ʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë)(!)¡¢ ¥Ö¥é¥±¥Ã¥Èɽ¸½ (bracket expression :¸å½Ò)¡¢ `^' (¹ÔƬ¤Î¶õÇòʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡¢ `$' (¹ÔËö¤Î¶õÇòʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡¢ `\' ¤Ë `^.[$()|*+?{\' ¤Î¤¤¤º¤ì¤«°ìʸ»ú¤ò¸åÃÖ¤·¤¿¤â¤Î (Ä̾ï¤Îʸ»ú¤È¤·¤Æ°·¤ï¤ì¡¢¤½¤Îʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡¢ `\' ¤Ë¤½¤ì°Ê³°¤Îʸ»ú¤ò¸åÃÖ¤·¤¿¤â¤Î(!) (`\' ¤¬¤Ê¤¤¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë¡¢¤½¤Îʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë(!))¡¢ Æä˰ÕÌ£¤ò»ý¤¿¤Ê¤¤Ê¸»ú°ì¤Ä (¤½¤Îʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡£ `{' ¤Ï¿ô»ú°Ê³°¤Îʸ»ú¤¬¸åÃÖ¤µ¤ì¤ë¤ÈÄ̾ï¤Îʸ»ú¤È¤·¤Æ°·¤ï¤ì¡¢ ·«¤êÊÖ¤·»ØÄê¤Î»Ï¤Þ¤ê¤È¤Ï¤µ¤ì¤Ê¤¤(!)¡£ `\' ¤Ç½ª¤ï¤ëÀµµ¬É½¸½¤ÏÉÔÀµ¤Ê¤â¤Î¤È¤ß¤Ê¤µ¤ì¤ë¡£

¥Ö¥é¥±¥Ã¥Èɽ¸½¤Ï `[]' ¤Ë¤è¤Ã¤ÆÊĤ¸¤é¤ì¤¿Ê¸»ú¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£ ¤³¤ì¤ÏÄ̾ï¥ê¥¹¥ÈÃæ¤Ë¸ºß¤·¤Æ¤¤¤ëʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ (Îã³°¤¢¤ê¡¢¸å½Ò¡£) ¥ê¥¹¥È¤¬ `^' ¤Ç»Ï¤Þ¤ë¤È¡¢ ¥Ö¥é¥±¥Ã¥Èɽ¸½¤Ï¥ê¥¹¥È¤Ë¸ºß¤·¤Æ¤¤¤Ê¤¤Ê¸»ú°ì¤Ä¤Ë¥Þ¥Ã¥Á¤¹¤ë (Îã³°¤¢¤ê¡¢¸å½Ò)¡£ ¥ê¥¹¥ÈÃæ¤ÎÆó¤Ä¤Îʸ»ú¤¬ `-' ¤Ç¶èÀÚ¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ ¤³¤ì¤Ï¾È¹ç½ç½ø (collating sequence) ¤Ç¤½¤ÎÆó¤Ä¤Îʸ»ú¤Ë¶´¤Þ¤ì¤ë¡¢ ¤¹¤Ù¤Æ¤Îʸ»ú¤ÎʤӤòû½Ì¤·¤¿¤â¤Î¤È¤ß¤Ê¤µ¤ì¤ë (ξü´Þ¤à)¡£ Î㤨¤Ð `[0-9]' ¤Ï ASCII ¤Ç¤Ï 10 ¿Ê¤Î¿ô»ú (digit) ¤Î¤¤¤º¤ì¤«¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ Æó¤Ä¤ÎÎΰè»ØÄ꤬üÅÀ¤ò¶¦Í­¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤(!)¡£ ¤Ä¤Þ¤ê `a-c-e' ¤Î¤è¤¦¤Ê¤â¤Î¤ÏÉÔÀµ¤Ç¤¢¤ë¡£Îΰè»ØÄê¤Ï¾È¹ç½ç½ø¤Ë¶¯¤¯°Í¸¤¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ°Ü¿¢À­¤Î¹â¤¤¥×¥í¥°¥é¥à¤òºî¤ë¾ì¹ç¤Ï¡¢ Îΰè»ØÄê¤Ë¤ÏÍê¤é¤Ê¤¤¤Û¤¦¤¬Îɤ¤¤À¤í¤¦¡£

¡ÚÌõÃí: ¾È¹ç½ç½ø (collating sequence) ¤È¤¤¤¦¤Î¤Ï¡¢¹ñºÝ²½ (Internationalization) ¤Ë´ØÏ¢¤·¤¿ÍѸì¤Ç¤¹¡£¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ëñ¸ì¤òÊ ¤Ù¤ëºÝ¤Ë¤Ï¡¢¸À¸ì¤Ë¤è¤Ã¤Æʤ٤ë´ð½à¤¬°Û¤Ê¤ê¤Þ¤¹¡£¾È¹ç½ç½ø¤Ï¡¢¤½¤Îº¹°Û¤ò µÛ¼ý¤¹¤ë¤¿¤á¤Î»ÅÁȤߤǤ¹¡£

Î㤨¤Ð¡¢¥¹¥Ú¥¤¥ó¸ì¤Ç¤Ï ch ¤È¤¤¤¦Ê¸»úʤӤòÆÃÊÌ°·¤¤¤¹¤ë¤¿¤á¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã ¥È½ç¤¬ a, b, c, ch, d, e, ... ¤Î½ç¤Ë¤Ê¤ë¤½¤¦¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¥·¡¼¥±¥ó¥¹ ¤Î¤³¤È¤ò collating sequence ¤È¸À¤¤¤Þ¤¹¡£¤³¤Î¤È¤­ `ch' ¤È¤¤¤¦Ê¸»úʤӤϡ¢ ñ¸ìÀ°Îó¤ÎºÝ¤Ë¤¢¤¿¤«¤â¡Ö°ìʸ»ú¡×¤Î¤è¤¦¤Ë°·¤ï¤ì¤Þ¤¹¡£¤³¤³¤Ç¡¢ ½ç½øÉÕ¤±¤ò¹Ô¤¦ºÝ¤ËºÇ¾®¤Îñ°Ì¤È¤Ê¤ë¡¢`a'¡¢`b' ¤Îʸ»ú¤ä `ch' ¤Î¤è¤¦¤ÊÆÃÊ̤Êʸ»úʤӤʤɡ¢¾È¹ç½ç½ø¤ÎÍ×ÁǤΤ³¤È¤ò collating element ¤È¸À¤¤¤Þ¤¹¡£collating sequence ¤Ï¡¢Ê¸»úñ°Ì¤Ç¤Ï¤Ê¤¯ collating element ¤òñ°Ì¤È¤·¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£¡Û

ʸ»ú `]' ¤½¤Î¤â¤Î¤ò¥ê¥¹¥È¤ËÆþ¤ì¤¿¤¤¾ì¹ç¤Ï¡¢ ºÇ½é¤Îʸ»ú¤È¤·¤Æ»ØÄꤹ¤ì¤ÐÎɤ¤ (`^' ¤Î¸å¤Ë³¤±¤ë¤Î¤Ç¤âÎɤ¤)¡£ ʸ»ú `-' ¤½¤Î¤â¤Î¤ò¥ê¥¹¥È¤ËÆþ¤ì¤¿¤¤¾ì¹ç¤Ï¡¢ ºÇ½é¤«ºÇ¸å¤Îʸ»ú¤È¤¹¤ì¤ÐÎɤ¤¡£ ¤¢¤ë¤¤¤ÏÎΰè»ØÄê¤Î½ªÃ¼Ê¸»ú¤È¤·¤Æ»ØÄꤷ¤Æ¤âÎɤ¤¡£ `-' ¤òÎΰè»ØÄê¤ÎÀèƬʸ»ú¤Ë»ØÄꤹ¤ë¤Ë¤Ï¡¢ `[.' ¤È `.]' ¤Ç°Ï¤Ã¤Æ¡¢ ¾È¹ç½ç½ø¤ÎÍ×ÁÇ (collating element: ¸å½Ò) ¤Ë¤¹¤ì¤ÐÎɤ¤¡£ ¾¤ÎÆüìʸ»ú (`\' ¤â´Þ¤à) ¤Ï¡¢ ¥Ö¥é¥±¥Ã¥Èɽ¸½¤ÎÆâÉô¤Ç¤Ï¤¹¤Ù¤ÆÄ̾ï¤Îʸ»ú¤È¤·¤Æ°·¤ï¤ì¤ë¡£

¥Ö¥é¥±¥Ã¥Èɽ¸½¤ÎÆâÉô¤Ç¤Ï¡¢ `[.' ¤È `.]' ¤Ë°Ï¤ï¤ì¤¿¾È¹ç½ç½ø¤ÎÍ×ÁǤϡ¢ ¤½¤ÎÍ×ÁǤËÂбþ¤¹¤ëʸ»úʤӤòɽ¤¹¡£ ¡Ö¾È¹ç½ç½ø¤ÎÍ×ÁǡפȤϡ¢ [1] ʸ»ú¡¢ [2] ñ°ìʸ»ú¤Î¤è¤¦¤Ë°·¤ï¤ì¤ëÊ£¿ôʸ»ú¤Î¥·¡¼¥±¥ó¥¹¡¢ [3] 1, 2 ¤¤¤º¤ì¤«¤ËÂбþ¤¹¤ë¾È¹ç½ç½ø¾å¤Î̾Á°¡¢¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£ ¤³¤Î·«¤êÊÖ¤·¤Ï¡¢¥Ö¥é¥±¥Ã¥Èɽ¸½¤Î¥ê¥¹¥È¤Ë¤ª¤±¤ëñ°ì¤ÎÍ×ÁǤȤʤ롣 ¾åµ­ [2] ¤Î¡¢¡ÖÊ£¿ôʸ»ú¤«¤é¤Ê¤ë¾È¹ç½ç½øÍ×Áǡפò´Þ¤à¥Ö¥é¥±¥Ã¥Èɽ¸½¤Ï¡¢ ¤·¤¿¤¬¤Ã¤Æ°ìʸ»ú°Ê¾å¤Ë¥Þ¥Ã¥Á¤¹¤ë¤³¤È¤¬¤¢¤ë¡£ Î㤨¤Ð¡¢¤â¤·¾È¹ç½ç½ø¤¬ `ch' ¤È¤¤¤¦Í×ÁǤò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ Àµµ¬É½¸½ `[[.ch.]]*c' ¤Ï `chchcc' ¤ÎºÇ½é¤Î 5 ʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

¥Ö¥é¥±¥Ã¥Èɽ¸½¤ÎÆâÉô¤Ç¤Ï¡¢ `[=' ¤È `=]' ¤Ë°Ï¤Þ¤ì¤¿¾È¹ç½ç½ø¤ÎÍ×ÁǤϡ¢ Åù²Á¥¯¥é¥¹ (equivalence class) ¤È¤Ê¤ë¡£ ¤³¤ì¤Ï¡¢¤½¤ÎÍ×ÁǤÈÅù²Á¤ÊÍ×ÁǤ¹¤Ù¤Æ¤«¤é¤Ê¤ëʸ»ú¥·¡¼¥±¥ó¥¹ (¼«¿È¤â´Þ¤à) ¤òɽ¤¹¡£ ¾¤ËÅù²Á¤ÊÍ×ÁǤ¬¤Ê¤±¤ì¤Ð¡¢ ¼è¤ê°·¤¤¤Ï `[.' ¤È `.]' ¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤ÈƱ¤¸¤Ç¤¢¤ë¡£ Î㤨¤Ð o ¤È ou ¤¬Åù²Á¥¯¥é¥¹¤Î¥á¥ó¥Ð¡¼¤Ç¤¢¤ì¤Ð¡¢ `[[=o=]]', `[[=ou=]]', `[o[.ou.]]' ¤Ï¤¹¤Ù¤ÆƱ¤¸°ÕÌ£¤Ë¤Ê¤ë¡£ Åù²Á¥¯¥é¥¹¤ÏÎΰè»ØÄê¤ÎüÅÀ¤Ë¤Ï¤Ê¤ì¤Ê¤¤(!)¡£

¥Ö¥é¥±¥Ã¥Èɽ¸½¤ÎÆâÉô¤Ç¤Ï¡¢ `[:' ¤È `:]' ¤Ç°Ï¤ï¤ì¤¿Ê¸»ú¥¯¥é¥¹ (character class) ¤Ï¤½¤Î¥¯¥é¥¹¤Ë°¤¹¤ë¤¹¤Ù¤Æ¤Îʸ»ú¤Î¥ê¥¹¥È¤òɽ¤¹¡£ ɸ½à¤ÇÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëʸ»ú¥¯¥é¥¹¤Î̾Á°¤Ï°Ê²¼¤ÎÄ̤ê:




alnum digitpunct

alpha graphspace

blank lowerupper

cntrl printxdigit

¤³¤ì¤é¤Ï wctype(3) ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëʸ»ú¥¯¥é¥¹¤òɽ¤·¤Æ¤¤¤ë¡£¥í¥±¡¼¥ë (locale) ¤Ë¤è¤Ã¤Æ¡¢ ¤³¤ì¤é°Ê³°¤Î¥¯¥é¥¹¤¬ÄêµÁ¤µ¤ì¤ë¤³¤È¤â¤¢¤ë¡£ ʸ»ú¥¯¥é¥¹¤ÏÎΰè»ØÄê¤ÎüÅÀ¤Ë¤Ï¤Ê¤ì¤Ê¤¤¡£

Àµµ¬É½¸½¤¬¡¢Í¿¤¨¤é¤ì¤¿Ê¸»úÎó¤ÎÊ£¿ô¤ÎÉôʬʸ»úÎó (substring) ¤Ë¥Þ¥Ã¥Á¤Ç¤­¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¢ ºÇ¤âÀèƬ¤Î¶á¤¯¤«¤é»Ï¤Þ¤ë¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤½¤Î°ÌÃÖ¤«¤é»Ï¤Þ¤ê¡¢Àµµ¬É½¸½¤¬¥Þ¥Ã¥Á¤Ç¤­¤ëÉôʬʸ»úÎó¤¬Ê£¿ô¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢ ºÇŤΤâ¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ÉôʬÀµµ¬É½¸½ (subexpression) ¤âºÇ¤âŤ¤Éôʬʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤¿¤À¤·¡¢Á´ÂΤΥޥåÁ¤¬ºÇŤǤ¢¤ë¤è¤¦¤Ë¡¢¤È¤¤¤¦¾ò·ï¤¬Í¥À褵¤ì¤ë¡£ Àµµ¬É½¸½¤ÎÃæ¤ÇÀè¤Ë¸½¤ì¤ëÉôʬÀµµ¬É½¸½¤Ï¡¢¸å¤Ë¸½¤ì¤ë¤â¤Î¤è¤êÍ¥À褵¤ì¤ë¡£ ¤¿¤À¤·¡¢¤è¤ê¹â°Ì¤ÎÉôʬÀµµ¬É½¸½¤Ï¡¢ ¤½¤ì¤ò¹½À®¤¹¤ëÄã°Ì¤ÎÉôʬÀµµ¬É½¸½¤è¤ê¤âÍ¥À褵¤ì¤ë¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£

¥Þ¥Ã¥ÁĹ¤Ï¾È¹ç½ç½ø¤ÎÍ×ÁǤǤϤʤ¯¡¢Ê¸»ú¿ô¤òñ°Ì¤È¤·¤Æ¥«¥¦¥ó¥È¤µ¤ì¤ë¡£ null ʸ»úÎó¤Ï¡¢Á´¤¯¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤è¤ê¤âŤ¤¤È¤ß¤Ê¤µ¤ì¤ë¡£ Î㤨¤Ð `bb*' ¤Ï `abbbc' ¤Î¤Þ¤óÃæ¤Î 3 ʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ `(wee|week)(knights|nights)' ¤Ï `weeknights' ¤ÎÁ´ÂΤ˥ޥåÁ¤¹¤ë¡£ `(.*).*' ¤ò `abc' ¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¤È¡¢ ³ç¸Ì¤ÎÆâÉô¤ÎÉôʬÀµµ¬É½¸½¤¬ 3 ʸ»ú¤¹¤Ù¤Æ¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ `(a*)*' ¤ò `bc' ¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¤È¡¢Àµµ¬É½¸½Á´ÂΤ⡢ ³ç¸Ì¤Ç³ç¤é¤ì¤¿ÉôʬÀµµ¬É½¸½¤â null ʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

¥Þ¥Ã¥Á¤¬Âçʸ»ú¡¦¾®Ê¸»ú¤ò̵»ë¤¹¤ë¤è¤¦¤Ë»ØÄꤵ¤ì¤ë¤È¡¢ ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥ÈÁ´ÂΤ«¤éÂ羮ʸ»ú¤Î¶èÊ̤¬Ìµ¤¯¤Ê¤Ã¤¿¤«¤Î¤è¤¦¤Ê¸ú²Ì¤È¤Ê¤ë¡£ Âçʸ»ú¡¦¾®Ê¸»ú¤ò»ý¤Ä¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤¬¥Ö¥é¥±¥Ã¥Èɽ¸½¤Î³°Éô¤Ç Ä̾ï¤Îʸ»ú¤È¤·¤Æ¸½¤ì¤ë¤È¡¢ ¤³¤ì¤Ï¼Â¸úŪ¤ËÂ羮ξÊý¤Îʸ»ú¤Î¥Ö¥é¥±¥Ã¥Èɽ¸½¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤ë¡£ ¤¹¤Ê¤ï¤Á `x' ¤Ï `[xX]' ¤È¤Ê¤ë¡£¥Ö¥é¥±¥Ã¥Èɽ¸½¤ÎÆâÉô¤Ë¸½¤ì¤ë¤È¡¢ Âçʸ»ú¤Ê¤é¾®Ê¸»ú¤¬¡¢¾®Ê¸»ú¤Ê¤éÂçʸ»ú¤¬¤½¤Î¥Ö¥é¥±¥Ã¥Èɽ¸½¤Ë²Ã¤¨¤é¤ì¤ë¡£ ¤¹¤Ê¤ï¤Á `[x]' ¤Ï `[xX]' ¤Ë¡¢ `[^x]' ¤Ï `[^xX]' ¤Ë¤Ê¤ë¡£

Àµµ¬É½¸½¤ÎŤµ¤Ë¤ÏÆäËÀ©¸Â¤Ï¤Ê¤¤(!)¡£ ¤¿¤À¤·°Ü¿¢À­¤ò¹â¤¯¤·¤¿¤¤¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ 256 ¥Ð¥¤¥È¤è¤êŤ¤Àµµ¬É½¸½¤Ï¼Â¹Ô¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Û¤¦¤¬Îɤ¤¡£ ¤Ê¤¼¤Ê¤é¡¢¤½¤Î¤è¤¦¤ÊÀµµ¬É½¸½¤òµñÈݤ·¡¢ ¤·¤«¤â POSIX ¸ß´¹¤òÊݤĤ褦¤Ê¼ÂÁõ¤¬²Äǽ¤À¤«¤é¤Ç¤¢¤ë¡£

¸Å¤¤ (``´ðËÜ'') Àµµ¬É½¸½¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎÅÀ¤Ë¤ª¤¤¤Æ°Û¤Ê¤ë¡£ `|', `+', `?' ¤ÏÄ̾ï¤Îʸ»ú¤È¤Ê¤ë¡£Âбþ¤¹¤ëµ¡Ç½¤Ï¸ºß¤·¤Ê¤¤¡£·«¤êÊÖ¤·»ØÄê¤Î¶èÀÚ¤ê¤Ï `\{' ¤ª¤è¤Ó `\}' ¤È¤Ê¤ë¡£ `{' ¤È `}' ¤Ï¡¢ ñÆȤǤÏÄ̾ï¤Îʸ»ú¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ÉôʬÀµµ¬É½¸½¤ò¥Í¥¹¥È¤¹¤ë³ç¸Ì¤Ï `\(' ¤ª¤è¤Ó `\)' ¤È¤Ê¤ê¡¢ `(' ¤È `)' ¤ÏñÆȤǤÏÄ̾ï¤Îʸ»ú¤È¤Ê¤ë¡£ `^' ¤ÏÀµµ¬É½¸½¤ÎÀèƬ¤«¡¢ ³ç¸Ì¤Ç¤¯¤¯¤é¤ì¤¿Éôʬɽ¸½¤ÎÀèƬ(!)¤ò½ü¤¤¤ÆÄ̾ï¤Îʸ»ú¤È¤Ê¤ë¡£ `$' ¤ÏÀµµ¬É½¸½¤ÎËöÈø¤«¡¢ ³ç¸Ì¤Ç¤¯¤¯¤é¤ì¤¿ÉôʬÀµµ¬É½¸½¤ÎËöÈø(!)¤ò½ü¤¤¤ÆÄ̾ï¤Îʸ»ú¤È¤Ê¤ë¡£ `*' ¤Ï¡¢Àµµ¬É½¸½¤ÎÀèƬ¤«¡¢ ³ç¸Ì¤Ç¤¯¤¯¤é¤ì¤¿Éôʬʸ»úÎó¤ÎÀèƬ¤ËÃÖ¤«¤ì¤¿¾ì¹ç¤ÏÄ̾ï¤Îʸ»ú¤È¤Ê¤ë (`^' ¤¬Á°ÃÖ¤µ¤ì¤Æ¤¤¤Æ¤â¤è¤¤)¡£ ºÇ¸å¤Ë¡¢¥¢¥È¥à¤È¤·¤ÆÊ̤Υ¿¥¤¥×¤¬Â¸ºß¤¹¤ë¡£ ¸åÊý»²¾È (back reference) ¤Ç¤¢¤ë¡£ `\' ¤Î¸å¤Ë 0 ¤Ç¤Ê¤¤ 10 ¿Ê¿ôÃÍʸ»ú d ¤¬Â³¤¯¤È¡¢ ³ç¸Ì¤Ç¤¯¤¯¤é¤ì¤¿ÉôʬÀµµ¬É½¸½¤Î d ÈÖÌܤ˥ޥåÁ¤·¤¿Ê¸»úʤӤÈƱ¤¸¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ (ÉôʬÀµµ¬É½¸½¤ÎÈÖ¹æÉÕ¤±¤Ï¡¢ ³«¤­³ç¸Ì `(' ¤Î°ÌÃÖ¤¬º¸¤Î¤â¤Î¤«¤é±¦¤Î¤â¤Î¤Ø¸þ¤«¤Ã¤Æ¤Ê¤µ¤ì¤ë¡£) ¤·¤¿¤¬¤Ã¤Æ `\([bc]\)\1' ¤Ï `bb' ¤Þ¤¿¤Ï `cc' ¤Ë¤Ï¥Þ¥Ã¥Á¤¹¤ë¤¬¡¢`bc' ¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

¥Ð¥°

Àµµ¬É½¸½¤¬ 2 ¼ïÎढ¤ë¤Î¤Ï³Ê¹¥°­¤¤¡£

¸½ºß¤Î POSIX.2 µ¬³Ê¤Ë¤ª¤¤¤Æ¤Ï¡¢ ')' ¤Ï¡¢ Âбþ¤¹¤ë `(' ¤¬¤Ê¤¤¾ì¹ç¤Ë¤ÏÄ̾ï¤Îʸ»ú¤È¤·¤Æ°·¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤·¤«¤·¤³¤ì¤Ï¡¢ËÜÍè¤Î°Õ¿Þ¤È¤Ï°Û¤Ê¤ëµ­½Ò¾å¤Î¥¨¥é¡¼¤Ç¤¢¤ê¡¢ ½¤Àµ¤µ¤ì¤ë²ÄǽÀ­¤¬¹â¤¤¡£¤³¤ì¤Ë°Í¸¤·¤¿¥³¡¼¥É¤Ï»È¤ï¤Ê¤¤¤³¤È¡£

¸åÊý»²¾È¤Ï¤Ò¤É¤¯½ÐÍè¤Î°­¤¤Âåʪ¤Ç¤¢¤ë¡£ ¸úΨ¤ÎÎɤ¤¼ÂÁõ¤ò¤¹¤ë¤Î¤Ï¤È¤Æ¤âÆñ¤·¤¤¡£ ¤Þ¤¿ÄêµÁ¤¬¤¢¤¤¤Þ¤¤¤Ç¤¢¤ë¡£ (`a\(\(b\)*\2\)*d' ¤Ï `abbbd' ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤È»×¤¦¤«¡©) »È¤ï¤Ê¤¤¤Û¤¦¤¬Îɤ¤¡£

POSIX.2 ¤Îµ¬³Ê¤Ç¤Ï¡¢case (Âçʸ»ú¤«¾®Ê¸»ú¤«) ¤Ë°Í¸¤·¤Ê¤¤¥Þ¥Ã¥Á¤Îµ­½Ò¤¬¤¢¤¤¤Þ¤¤¤Ç¤¢¤ë¡£ ¸½ºß¤Î¤È¤³¤í¤Ç¤Ï¡Ö°ì¤Ä¤Î case ¤¬¤¹¤Ù¤Æ¤Î case ¤ò°ÕÌ£¤¹¤ë¡× ¤È¤¤¤¦¾åµ­¤ÎÄêµÁ¤¬Àµ¤·¤¤²ò¼á¤Ç¤¢¤ë¤È¤¤¤¦¤Î¤¬¡¢ ¼ÂÁõ¼Ô¤Î´Ö¤Ç¤Î¶¦ÄÌǧ¼±¤Î¤è¤¦¤Ç¤¢¤ë¡£

¥ï¡¼¥É¶­³¦¤Ë´Ø¤¹¤ëʸˡÄêµÁ¤¬Èó¾ï¤Ë½¹¤¤¡£

´ØÏ¢¹àÌÜ

regex(3)

POSIX.2, section 2.8 (Regular Expression Notation).