æ£åˆ™è¡¨è¾¾å¼ä¸€ç›´æ˜¯è®¡ç®—机领域ç»ä¹…ä¸è¡°çš„è¯é¢˜ï¼Œè¯´ç®€å•也简å•,简å•åœ¨è¯æ³•,内容ä¸å¤š30分钟足以入门;说难也难,难在å˜åŒ–ï¼Œä¸€ä¸ªå¤æ‚æ£åˆ™çš„ç†è§£å’Œä¸€ä¸ªå¤æ‚é—®é¢˜çš„ç®€å•æ£åˆ™å®žçŽ°ï¼Œéƒ½æ˜¯é¢‡ä¸ºè€ƒéªŒäººçš„ã€‚
å‡†å¤‡å†™ä¸¤ç¯‡æ–‡ç« è®°å½•å¯¹æ£åˆ™çš„å¦ä¹ ï¼Œä¸€ç¯‡è®°å½•åŸºç¡€è¯æ³•(看起æ¥è¶…简å•),一篇记录诸多细节问题(其实远没有那么简å•)
ä¸åŒè¯è¨€å¯¹æ£åˆ™çš„实现有些微差异,本文å‚考python实现
Pythonè¯è¨€æœ¬èº«ä¸æ”¯æŒæ£åˆ™è¡¨è¾¾å¼ï¼Œä¾èµ–re模å—
è¿™å¥è¯æ„味ç€ä½ 用原生stringçš„replace()\split()å‡½æ•°éƒ½æ˜¯æ— æ³•ç”¨æ£åˆ™çš„
Pythonå¸¸ç”¨åŒ¹é…æ¨¡å¼
è¯æ³• | 说明 | 示例 |
---|---|---|
. | åŒ¹é…æ¢è¡Œç¬¦\n以外的所有å—符 | b.c åŒ¹é… bac 或 bdc |
* | 匹é…一个å—符0次或多次 | b*c åŒ¹é… c 或 bbbc |
+ | 匹é…一个å—符1次或多次 | b+c åŒ¹é… bc 或 bbbc |
? | 匹é…一个å—符0次或1次 | b?c åŒ¹é… c 或者 bc |
{m} | 匹é…å‰ä¸€ä¸ªå—符 m 次 | b{2}c åŒ¹é… bbc |
{m,n} | 匹é…å‰ä¸€ä¸ªå—符 m 至 n 次 | b{2,5}c åŒ¹é… bbc 或者 bbbbc |
[abc] | åŒ¹é… [] 内的任æ„å—符 | [bc] åŒ¹é… b 或者 c |
\d | åŒ¹é…æ•°å— [0-9] | b\dc åŒ¹é… b1c ç‰ |
\D | 匹é…éžæ•°å—,ç‰ä»·äºŽ [^\d] | b\Dc åŒ¹é… bAc |
\s | 匹é…空白å—符 | b\sc åŒ¹é… b c |
\S | 匹é…éžç©ºç™½å—符,ç‰ä»·äºŽ[^s] | b\Sc åŒ¹é… bac |
\w | åŒ¹é… [A-Za-z0-9_] | b\wc åŒ¹é… bAc ç‰ |
\W | ç‰ä»·äºŽ [^\w] | b\Wc åŒ¹é… b c |
\ | 转义å—符 | b\c åŒ¹é… b\c |
^ | 匹é…å—符串开头 | bc 匹é…å¥é¦–çš„ bc |
$ | 匹é…å—符串末尾 | bc$ 匹é…以 bc 结尾的å—符串 |
\A | 仅匹é…å—符串开头 | \Abc 匹é…å—符串开头的 bc |
\Z | 仅仅匹é…å—符串末尾 | bc\Z 匹é…å—符串末尾的 bc |