Next: , Previous: Translit, Up: Text handling   [Contents][Index]


10.6 Àµµ¬É½¸½¤Ç¥Æ¥­¥¹¥È¤ÎÃÖ´¹¤ò¤¹¤ë

ʸ»úÎó¤ÎÁ´ÃÖ´¹¡Êglobal substitution¡Ë¤Ïpatsubst¤Ç¹Ô¤¤¤Þ¤¹¡£

patsubst(string, regexp, opt replacement)

stringÃæ¤Çregexp¤Ë¥Þ¥Ã¥Á¤¹¤ëÉôʬ¤òõ¤·¡¢ ¤½¤ì¤é¤ò¤¹¤Ù¤Æreplacement¤ËÃÖ´¹¤·¤Þ¤¹¡£ Àµµ¬É½¸½¤Î¹½Ê¸¤ÏGNU Emacs¤Î¤â¤Î¤ÈƱ¤¸¤Ç¤¹¡£

string¤ÎÃæ¤Çregexp¤ËŬ¹ç¤¹¤ë¤É¤Î²Õ½ê¤Ë¤â´Þ¤Þ¤ì¤Ê¤¤Éôʬ¤ÏŸ³«¸å¤Î ¥Æ¥­¥¹¥È¤Ë¤½¤Î¤Þ¤Þ»Ä¤ê¤Þ¤¹¡£ ¥Þ¥Ã¥Á¤¹¤ë²Õ½ê¤¬¸«¤Ä¤«¤ë¤¿¤Ó¤Ë¡¢ ¥µ¡¼¥Á¤Ï¤½¤Î¥Þ¥Ã¥Á¤·¤¿²Õ½ê¤Î½ª¤ê¤«¤é³¹Ô¤µ¤ì¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤ÆstringÆâ¤Î¤¢¤ëʸ»ú¤¬2²óÃÖ´¹¤µ¤ì¤ë¤³¤È¤Ï·è¤·¤Æ¤¢¤ê¤Þ¤»¤ó¡£ regexp¤¬Ä¹¤µ0¤Îʸ»úÎó¤Ë¥Þ¥Ã¥Á¤·¤¿¤È¤­¤Ï¡¢ ̵¸Â¥ë¡¼¥×¤òÈò¤±¤ë¤¿¤á¥µ¡¼¥Á¤Î³«»Ï°ÌÃÖ¤Ï1ʸ»úÁ°¤Ë¿Ê¤á¤é¤ì¤Þ¤¹¡£

ÃÖ¤­´¹¤¨¤¬¹Ô¤ï¤ì¤ë¤È¤­¤Ï¡¢replacement¤Ë´Þ¤Þ¤ì¤ë‘\n’¤ò regexpÆâ¤Î¥«¥Ã¥³¤Ç¤¯¤¯¤é¤ì¤¿nÈÖÌܤÎÉôʬ¼°¤Ë¥Þ¥Ã¥Á¤·¤¿¥Æ¥­¥¹¥È ¤ËÃÖ¤­´¹¤¨¡¢‘\&’¤òÀµµ¬É½¸½Á´ÂΤ˥ޥåÁ¤·¤¿¥Æ¥­¥¹¥È¤ËÃÖ¤­´¹¤¨¤¿¤â¤Î¤¬ Ÿ³«¸å¤Î¥Æ¥­¥¹¥È¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£

°ú¿ôreplacement¤Ï¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤½¤Î¤È¤­¤Ïregexp¤Ë¥Þ¥Ã¥Á¤·¤¿¥Æ¥­¥¹¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£

patsubst(`GNUs not Unix', `^', `OBS: ')
⇒OBS: GNUs not Unix
patsubst(`GNUs not Unix', `\<', `OBS: ')
⇒OBS: GNUs OBS: not OBS: Unix
patsubst(`GNUs not Unix', `\w*', `(\&)')
⇒(GNUs)() (not)() (Unix)
patsubst(`GNUs not Unix', `\w+', `(\&)')
⇒(GNUs) (not) (Unix)
patsubst(`GNUs not Unix', `[A-Z][a-z]+')
⇒GN not 

¼¡¤Ï¤â¤¦¤¹¤³¤·¸½¼ÂŪ¤ÊÎã¤Ç¤¹¡£ ʸ»úÎó¤ÎÃæ¤Ë¥Þ¥¯¥íupcase¤Èdowncase¤Î¸Æ¤Ó½Ð¤·¤òÁÞÆþ¤¹¤ë¤³¤È¤Ç¡¢ ñÆÈ¤Îñ¸ì¤Þ¤¿¤ÏʸÁ´ÂΤò¥­¥ã¥Ô¥¿¥é¥¤¥º¡Êcapitalize¡Ë¤·¤Þ¤¹¡£

define(`upcase', `translit(`$*', `a-z', `A-Z')')dnl
define(`downcase', `translit(`$*', `A-Z', `a-z')')dnl
define(`capitalize1',
     `regexp(`$1', `^\(\w\)\(\w*\)', `upcase(`\1')`'downcase(`\2')')')dnl
define(`capitalize',
     `patsubst(`$1', `\w+', `capitalize1(`\&')')')dnl
capitalize(`GNUs not Unix')
⇒Gnus Not Unix

ÁȤ߹þ¤ß¥Þ¥¯¥ípatsubst¤Ï°ú¿ô¤òÍ¿¤¨¤¿¤È¤­¤À¤±Ç§¼±¤µ¤ì¤Þ¤¹¡£