REGEX 7 1994-02-07 .SH NAME regex

中文man手册

REGEX

NAME
DESCRIPTION
SEE ALSO åè§
BUGS
AUTHOR ä½è
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
è·

NAME

regex - POSIX 1003.2 æ£å表达å¼

DESCRIPTION

æ£åè¡¨è¾¾å¼ (‘‘RE’’s), å¨ POSIX 1003.2 ä¸å®ä¹ï¼åå«ä¸¤ç§ç±»åï¼ æ°å¼ REs (åºæ¬ä¸æçæ¯ egrep 使ç¨çé£äºï¼1003.2 ç§°å¶ä¸º ‘‘extended’’ REs ä¹å°±æ¯âæ©å±çREsâ) åæ§å¼ REs (æçæ¯ ed(1) ä¸çé£äºï¼1003.2 ç§°ä¹ä¸º ‘‘basic’’ REs ä¹å°±æ¯âåºæ¬çREsâ). æ§å¼ REs çå- å¨ä»ä»æ¯ä¸ºäºåååä¸äºæ§ç¨åºä¿æå¼å®¹ï¼å¨æåå°å ä»¥è®¨è®ºã 1003.2 对 RE è¯æ³åè¯ä¹çæäºæ¹é¢æ²¡æå强å¶è§å®ï¼ ‘(!)’ è®°å·æ ç¤ºäºè¿äºå容ï¼å®ä»¬å¯è½ä¸è½å®å¨ç§»æ¤å°å¶ä» 1003.2 å®ç°å½ä¸ã

ä¸ä¸ª(æ°å¼ç) RE æ£åè¡¨è¾¾å¼æ¯ä¸ä¸ª(!) æå¤ä¸ªé空(!) branches 忝ï¼ä»¥ ‘|’ åéã å®å¹éä»»ä½å¹éå¶ä¸ä¸ä¸ªåæ¯ç符å·ä¸²ã

ä¸ä¸ª branch 忝æ¯ä¸ä¸ª(!) æå¤ä¸ª pieces çæ®µè¿ç»èæã 符å·ä¸²é¦åè¦å¹éå®ç第ä¸ä¸ªçæ®µï¼æ¥ä¸æ¥å©ä½é¨ååå¹é第äºä¸ªç段ï¼ä»¥æ- ¤ç±»æ¨ã

ä¸ä¸ª piece çæ®µæ¯ä¸ä¸ª atom ååï¼å¶åå¯è½åå«ä¸ä¸ª(!) ‘*’, ‘+’, ‘?’, æè bound éè¯ã ä¸ä¸ªååå ä¸ ‘*’ å¹éé¶ä¸ªæå¤ä¸ªè¿ä¸ªååçå¹éææçåºåã ä¸ä¸ªååå ä¸ ‘+’ å¹éä¸ä¸ªæå¤ä¸ªè¿ä¸ªååçå¹éææçåºåã ä¸ä¸ªååå ä¸ ‘?’ å¹éé¶ä¸ªæä¸ä¸ªè¿ä¸ªååçå¹éã

ä¸ä¸ª bound éè¯æ¯ ‘{’ åé¢è·ä¸ä¸ªæ ç¬¦å·åè¿å¶æ´æ°ï¼å¯è½è¿ä¼è·ä¸ä¸ª ‘,’ï¼ å¯è½è¿ä¼åè·ä¸ä¸ªæ ç¬¦å·åè¿å¶æ´æ°ï¼ç¶å以 ‘}’ ç»æã æ´æ°ç大å°å¿é¡»å¨ 0 å RE_DUP_MAX (255(!)) ä¹é´(åå«è¾¹çå¼)ã 妿ç»åºäºä¸¤ä¸ªæ°å- ï¼é£ä¹ç¬¬ä¸ä¸ªå³ä¸è½æ¯ç¬¬äºä¸ªå¤§ã ä¸ä¸ªååçéè¯ä¸å¦æåªæä¸ä¸ªæ°å- èæ²¡æéå·çè¯ï¼å°±å¹é i 个è¿ä¸ªååçå¹éææçåºåã ä¸ä¸ªååçéè¯ä¸- å¦æåªæä¸ä¸ªæ°å并䏿éå·çè¯ï¼å°±å¹é i 个æå¤ä¸ªè¿ä¸ªååçå¹éææçåºåã ä¸ä¸ªååçéè¯ä¸å¦æåå«ä¸¤ä¸ªæ°å i å j çè¯ï¼å°±å¹é i å° j 个è¿ä¸ªåå- çå¹éææçåºåã

ä¸ä¸ªå忝ä¸ä¸ªåå«å¨ ‘()’ ä¸çæ£åè¡¨è¾¾å¼ (è¿å°å¹éè¿ä¸ªæ- £å表达å¼å¹éç符å·ä¸²)ï¼ ä¸ä¸ªç©ºç ‘()’ (å¹é空串)ï¼ ä¸ä¸ª bracket expression (æ¹æ¬å·è¡¨è¾¾å¼ï¼åè§ä¸é¢)ï¼ ‘.’ (å¹éä»»ä½å符)ï¼ ‘ˆ’ (å¹éè¡é¦ç空å符串)ï¼ ‘$’ (å¹éè¡å°¾ç空å符串)ï¼ ä¸ä¸ª ‘\’ å ä¸ä¸åå- 符ä¹ä¸ ‘ˆ.[$()|*+?{\’ (å¹éè¿ä¸ªå符ï¼å¿½ç¥å®çä»»ä½ç¹æ®æä¹)ï¼ ä¸ä¸ª ‘\’ (å ä¸ä»»ä½å¶ä»å符(!) å¹éé£ä¸ªå符ï¼å¿½ç¥å®çä»»ä½ç¹æ®æä¹ï¼å°±å¥½å ‘\’ ä¸åå¨(!))ï¼ æèæ¯ä¸ä¸ªåç¬¦ï¼æ²¡æç¹æ®æä¹ (å¹é宿¬èº«)ã ä¸ä¸ª ‘{’ å颿¯ä¸ä¸ªéæ°åçå符æ¶ï¼æ¯ä¸ä¸ªæ®éçå符è䏿¯éè¯çå¼å§(!)ã 以 ‘\’ æ¥ç»æä¸ä¸ª RE æ¯éæ³çã

ä¸ä¸ª bracket expression æ¹æ¬å·è¡¨è¾¾å¼æ¯ä¸ä¸ªå符çå表ï¼åå«å¨ ‘[]’ å½ä¸ã å®ä¸è¬å¹éå表ä¸çä»»ä½ä¸ä¸ªå符 (æç¹æ®æåµ)ã 妿è¿ä¸ªå表以 ‘ˆ’ å¼å§ï¼å®å°å¹é ä¸å¨ å表ä¸çä»»ä½å符 (ä¸é¢è¿ä¼è®²å°ç¹æ®æåµ)ã 妿å表ä¸- ç两个å符以 ‘-’ åéï¼å¯ä»¥è¡¨ç¤ºåæ¯è¡¨ä¸è¿ä¸¤ä¸ªå- 符ä¹é´(忬è¿ä¸¤ä¸ªå符)ææçå符ã ä¾å¦ï¼ASCII åç¬¦è¡¨ä¸ ‘[0-9]’ å¹é任使°åã ä¸è½(!) ç¨ä¸ä¸ªå符ä½ä¸ºå®ä¹ä¸¤ä¸ªå符èå´ç端ç¹ï¼å°±åè¿æ · ‘a-c-e’ã å符èå´æ¯ä¸åæ¯è¡¨é¡ºåºç¸å³çï¼å¯ç§»æ¤çç¨åºä¸åºä½¿ç¨å®ä»¬ã

è¦å¨å表ä¸åå«ä¸ä¸ªåé¢ç(没æç¹æ®å«ä¹ç) ‘]’ï¼å¯ä»¥æå®æ¾å¨é¦ä½(åé¢å¯è½è¦å ä¸ä¸ä¸ª‘ˆ’)ã è¦å¨å表ä¸åå«ä¸ä¸ªåé¢ç ‘-’ï¼å¯ä»¥æå®æ¾å¨é¦ä½ææ«å°¾ï¼æè让å®ä½ä¸ºä¸ä¸ªå符èå´çæ«ç«¯ç¹ã è¦ä»¥ä¸ä¸ªåé¢ç ‘-’ ä½ä¸ºå符èå´çèµ·å§ï¼å¯ä»¥å°å®æ¾å¨ ‘[.’ å ‘.]’ å½ä¸ï¼ 使å¾å®æä¸ºä¸ä¸ª collating element (å½å¹¶åç´ ï¼åè§ä¸é¢)ã ç¹æ®æåµé¤äºè¿äºï¼è¿æä½¿ç¨ ‘[’ çç»å(åè§ä¸ä¸æ®µ)ãææå¶ä»ç¹æ®å符ï¼åæ¬ ‘\’ å¨åï¼å¨æ¹æ¬å·è¡¨è¾¾å¼ä¸é½å¤±å»äºå®ä»¬çç¹æ®å«ä¹ã

æ¹æ¬å·è¡¨è¾¾å¼ä¸ï¼ä¸ä¸ªåå«å¨ ‘[.’ å ‘.]’ ä¸çå½å¹¶åç´  (collating elementï¼ä¸ä¸ªå符ï¼ä¸ä¸ªè§ä¸ºä¸ä½çå符åºåï¼ æèä¸ä¸ªä»£è¡¨çä¸è¿°ä¸¤ç±»çå½å¹¶åºååç§°) 代表çè¿ä¸ªå½å¹¶åç´ æåå«çå- 符åºåã è¿ä¸ªåºå被è§ä¸ºæ¹æ¬å·è¡¨è¾¾å¼çä¸ä¸ªåç´ ã å æ¤ä¸ä¸ªåå«çå¤å- 符å½å¹¶åç´ çæ¹æ¬å·è¡¨è¾¾å¼å¯ä»¥å¹éå¤äºä¸ä¸ªçå符ã ä¾å¦ï¼å¦æè¿ä¸ªå½å¹¶åºååå«ä¸ä¸ªå½å¹¶åç´  ‘ch’ï¼é£ä¹ æ£åè¡¨è¾¾å¼ ‘[[.ch.]]’*c’ å¯ä»¥å¹é ‘chchcc’ çåäºä¸ªå符ã

æ¹æ¬å·è¡¨è¾¾å¼ä¸ï¼ä¸ä¸ªåå«å¨ ‘[=’ å ‘=]’ ä¸çå½å¹¶åç´ æ¯ä¸ä¸ªç- ä»·ç±»ï¼ä»£è¡¨ç çä»·äºå®çææå½å¹¶åç´  (ä¹åæ¬å®èªèº«)åå«çå符çåºåã (å¦ææ²¡æå¶ä»çä»·çå½å¹¶åç´ ï¼å°±æå®ä¸æ¬å·åéç¬¦æ¯ ‘[.’ å ‘.]’ æ¶åæ ·çå¾ã) ä¾å¦ï¼å¦æ o å ˆ æ¯ä¸ä¸ªçä»·ç±»çæåï¼é£ä¹ ‘[[=o=]]’1[[=ˆ=]]’ è¿æ ‘[oˆ]’ 齿¯åä¹è¯ã ä¸ä¸ªçä»·ç±»ä¸è½(!) æ¯ä¸ä¸ªå符èå´çæ«ç«¯ç¹ã

æ¹æ¬å·è¡¨è¾¾å¼ä¸ï¼åå«å¨ ‘[:’ å ‘:]’ ä¸çä¸ä¸ª character class(å符类) 代表çè¿ä¸ª å符类ä¸çææå符çåè¡¨ã æ åçå符类åç§°æ¯ï¼

alnum

digit

punct

alpha

graph

space

blank

lower

upper

cntrl

print

xdigit

å®ä»¬ä»£è¡¨ç wctype(3) å®ä¹çå符类ã ä¸ä¸ª locale(è¯è¨ç¯å¢) å¯è½ä¼æä¾å¶ä»å符类ã ä¸ä¸ªå符类ä¸è½ç¨ä½ä¸ä¸ªå符èå´çæ«ç«¯ç¹ã

æ¹æ¬å·è¡¨è¾¾å¼è¿æä¸¤ç§ç¹æ®çæåµ(!) ï¼ æ¹æ¬å·è¡¨è¾¾å¼ ‘[[:<:]]’ å ‘[[:>:]]’ åå«å¹éä¸ä¸ªè¯çå¼å§åç»å°¾ç空å符串ã ä¸ä¸ª word (è¯)æ¯ä¸ä¸ª word character (æè¯å符) çåºåï¼å¹¶ä¸åå齿²¡ææè¯å符ã ä¸ä¸ª word character (æè¯å符) æ¯ä¸ä¸ª alnum å符 (å¨ wctype(3) 䏿å®ä¹) æèæ¯ä¸ä¸ªä¸å线ã è¿æ¯ä¸ä¸ªæ©å±ï¼ä¸ POSIX 1003.2 å¼å®¹ä½æ²¡æå奿- £æï¼å¨éè¦ç§»æ¤å°å¶ä»ç³»ç»ä¸ç软件ä¸åºå½å°å¿ä½¿ç¨ã

妿ä¸ä¸ª RE å¯ä»¥å¹éä¸ä¸ªå符串çå¤ä¸ªä¸åçå串æ¶ï¼RE éæ©å¹éæåé¢çä¸ä¸ªã 妿è¿ä¸ª RE å¹éçå串æç¸åçèµ·å§ç¹ï¼RE éæ©å¹éæé¿çä¸ä¸ªã å- 表达å¼ä¹å¹éæé¿çå串ï¼ä½¿å¾æ´ä¸ªå¹éçå串æé¿ï¼RE ä¸åé¢ çå- è¡¨è¾¾å¼æ¯åé¢çå表达å¼ä¼å级é«ã 注æé«çº§çåè¡¨è¾¾å¼æ¯ç»æå®çå- 表达å¼ä¼å级è¦é«ã

å¹éé¿åº¦ä»¥å符æ¥è®¡ç®ï¼è䏿¯å½å¹¶åç´ ã 空å- ç¬¦ä¸²è¢«è®¤ä¸ºæ¯æ²¡æå¹éè¦é¿ãä¾å¦ï¼‘bb*’ å¹é ‘abbbc’ çä¸é´ä¸ä¸ªåç¬¦ï¼ ‘(wee|week)(knights|nights)’ å¹é ‘weeknights’ çå¨é¨å个åç¬¦ï¼ ‘(.*).*’ å¹é ‘abc’ï¼å¶ä¸æ¬å·ä¸çå表达å¼å¹éææè¿ä¸ä¸ªåç¬¦ï¼ ‘(a*)*’ æ¥å ‘bc’ å¹éæ¶ï¼æ¬å·ä¸çå表达å¼åæ´ä¸ª RE é½å¹é空å符串ã

妿æå®äº case-indepentent 忽ç¥å¤§å°åçå¹éï¼æææ¯åæ¯è¡¨ä¸- ç大å°ååºå«ä¼¼ä¹é½æ¶å¤±äºã 妿ä¸ä¸ªå- æ¯å¯è½ä»¥ä¸¤ç§æåµåºç°ï¼åå¦å®åºç°å¨æ¹æ¬å·è¡¨è¾¾å¼ä¹å¤ï¼å®éä¸è¢«æ¿æ¢æäºä¸ä¸ªåå« æææåµçæ¹æ¬å·è¡¨è¾¾å¼ï¼ä¾å¦ ‘x’ æä¸ºäº ‘[xX]’ï¼å¦æå®åºç°å¨æ¹æ¬å·è¡¨è¾¾å¼ä¹åï¼ é£ä¹å®çææå½¢å¼é½è¢«å å¥å°è¿ä¸ªæ¹æ¬å·è¡¨è¾¾å¼ä¹åï¼å æ¤ä¾å¦ ‘[x]’ çåäº ‘[xX]’ï¼è¿æ ‘[ˆx]’ æä¸ºäº ‘[ˆxX]’ã

对 RE çé¿åº¦æ²¡æå¼ºå¶çéå¶ãéè¦å¯ç§»æ¤çç¨åºä¸åºå½ä½¿ç¨é¿äº256åèçæ- £å表达å¼ï¼ å ä¸ºç¹å®çå®ç°å¯ä»¥ä¸æ¥åè¿ç§ REï¼ä½æ¯ä»ç¶æ¯ POSIX å¼å®¹çã

è¿æ¶ç (‘‘basic’’) æ£å表达å¼å¨å¾å¤å°æ¹æä¸åä¹å¤ã‘|’1+’ å ‘?’ æ¯æ®éçå- ç¬¦ï¼ å¹¶ä¸æ²¡æåå®ä»¬çä»·çåè½ãéè¯çåéç¬¦æ¯ ‘\{’ å ‘\}’1{’ å ‘}’ æ¬èº«æ¯æ®éçå符ã åµå¥çå表达å¼ä½¿ç¨çæ¬å·æ¯ ‘\(’ å ‘\)’1(’ å ‘)’ æ¬èº«æ¯æ®éçå符㠑ˆ’ æ¯ä¸ä¸ªæ®éçå符ï¼é¤éæ¯ RE ç第ä¸ä¸ªåç¬¦ï¼æè(!) ä¸ä¸ªæ¬å·ä¸çå表达å¼ç第ä¸ä¸ªå符㠑$’ æ¯ä¸ä¸ªæ®éçå符ï¼é¤éæ¯ RE çæåä¸ä¸ªåç¬¦ï¼æè(!) ä¸ä¸ªæ¬å·ä¸çå表达å¼çæåä¸ä¸ªå符㠑*’ æ¯ä¸ä¸ªæ®éçå符ï¼å¦æå®åºç°å¨ RE çå¼å§ï¼æèä¸ä¸ªæ¬å·ä¸çå- 表达å¼çå¼å§(å¶åä¸è¬æ¯ä¸ä¸ª ‘ˆ’)ã æåï¼è¿æä¸ç±» atom ååï¼ä¸ä¸ª back reference(ååå¼ç¨)1\’ å¶åè·ä¸ä¸ªéé¶åè¿å¶æ´æ° dï¼ å¹éä¸ç¬¬ d 个æ¬å·ä¸- çå表达å¼çå¹éç¸åçå容(å- 表达å¼çç¼å·æ¯æ ¹æ®å®ä»¬çå·¦æ¬å·èæ¥ï¼ä»å·¦å°å³)ã å æ- ¤(ä¾å¦)1\([bc]\)\1’ å¹é ‘bb’ æ ‘cc’ 使¯ä¸å¹é ‘bc’ã

SEE ALSO åè§

regex(3)

POSIX 1003.2, section 2.8 (Regular Expression Notation).

BUGS

åæ¶ä½¿ç¨ä¸¤ç§ REs æ¯ä¸ææºçã

ç®åç 1003.2 è§çº¦ç§°ï¼å¦æå³æ¬å· ‘)’ 没æå¯¹åºç ‘(’ é£ä¹è§ä¸ºæ®éå- 符ï¼è¿ä¸ªè§å®æ¯ä¸ä¸ªç¬è¯¯ï¼å°æ¥ä¼æ¹æ£ã é¿å使ç¨å®ã

ååå¼ç¨æ¯ç³ç³çè®¾è®¡ï¼æ¯é«æçå®ç°ä¸è¦é¢å¯¹ç主è¦é®é¢ã å¦å¤è¿ä¼äº§çæ¦æ¶©çè¯æ³ (1a\(\(b\)*\2\)*d’ å¯ä»¥å¹é ‘abbbd’ åï¼)ã é¿å使ç¨å®ä»¬ã

1003.2 对äºå¿½ç¥å¤§å°åçå¹éçè§å®ä¹ä¸æç¡®ã ä¸é¢ç»åºçå®ä¹ ‘‘one case implies all cases’’ æ¯å½ååå®ç°èçå±è¯ï¼è¢«å½ä½æ£ç¡®çè¯æ³ã

è¯è¾¹ççè¯æ³ä¸éå¾è®©äººé¾ä»¥æ¥åã

AUTHOR ä½è

This page was taken from Henry Spencer’s regex package.

[䏿çç»´æ¤äºº]

è¢ä¹é§ <bbbush@163.com>

[ä¸æçææ°æ´æ°]

2004.02.24

ãä¸å½linux论åmanæå页翻è¯è®¡åã:

http://cmpp.linuxforum.net

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh