例如<a>123</a><a>456</a><a>789</a>,如何用正则表达式提取出123,456,789呢?正则表达式知道写成<a>([\s\S]*?)</a>,但是一次匹配过后怎么从上次的位置继续匹配呢?
1.1 å¥ç¹ç¬¦å·
å¨ç©è±ææ¼å游æï¼æ³è¦æ¾åºä¸ä¸ªåæ¯çåè¯ï¼èä¸è¿äºåè¯å¿ 须以âtâåæ¯å¼å¤´ï¼ä»¥ânâåæ¯ç»æãå¦å¤ï¼å设æä¸æ¬è±æåå ¸ï¼å¯ä»¥ç¨æ£å表达å¼æç´¢å ¨é¨å 容ãè¦æé åºè¿ä¸ªæ£å表达å¼ï¼å¯ä»¥ä½¿ç¨ä¸ä¸ªéé 符ââå¥ç¹ç¬¦å·â.âãè¿æ ·ï¼å®æ´ç表达å¼å°±æ¯ât.nâï¼å¹é âtanâãâtenâãâtinâåâtonâï¼è¿å¹é ât#nâãâtpnâçè³ât nâï¼è¿æå ¶è®¸å¤æ æä¹çç»åãè¿æ¯å 为å¥ç¹ç¬¦å·å¹é ææå符ï¼å æ¬ç©ºæ ¼ãTabå符çè³æ¢è¡ç¬¦ï¼
1.3 âæâ符å·
å¦æé¤äºä¸é¢å¹é çææåè¯ä¹å¤ï¼è¿æ³è¦å¹é âtoonâï¼é£ä¹ï¼å¯ä»¥ä½¿ç¨â|âæä½ç¬¦ãâ|âæä½ç¬¦çåºæ¬æä¹å°±æ¯âæâè¿ç®ãè¦å¹é âtoonâï¼ä½¿ç¨ât(a|e|i|o|oo)nâæ£å表达å¼ãè¿éä¸è½ä½¿ç¨æ¹æ©å·ï¼å 为æ¹æ¬å·åªå 许å¹é å个å符ï¼è¿éå¿ é¡»ä½¿ç¨åæ¬å·â()âãåæ¬å·è¿å¯ä»¥ç¨æ¥åç»ã
1.4 表示å¹é 次æ°ç符å·
ä¸è¡¨æ¾ç¤ºäºæ£å表达å¼çè¯æ³ï¼
表 1.1 æ£å表达å¼è¯æ³
è¦å¨ææ¬æ件ä¸æç´¢ç¾å½ç社ä¼å®å ¨å·ç ãè¿ä¸ªå·ç çæ ¼å¼æ¯999-99-9999ãç¨æ¥å¹é çæ£å表达å¼å¦å¾ä¸æ示ãå¨æ£å表达å¼ä¸ï¼è¿å符ï¼â-âï¼æçç¹æ®çæä¹ï¼è¡¨ç¤ºä¸ä¸ªèå´ï¼æ¯å¦ä»0å°9ãå æ¤ï¼å¹é 社ä¼å®å ¨å·ç ä¸çè¿å符å·æ¶ï¼åé¢è¦å ä¸ä¸ä¸ªè½¬ä¹å符â/âã
1.5 âå¦â符å·
â^â符å·ç§°ä¸ºâå¦â符å·ãå¦æç¨å¨æ¹æ¬å·å ï¼â^â表示ä¸æ³è¦å¹é çå符ãä¾å¦ï¼å¾åçæ£å表达å¼å¹é ææåè¯ï¼ä½ä»¥âXâåæ¯å¼å¤´çåè¯é¤å¤ã
1.6 åæ¬å·å空ç½ç¬¦å·
â/sâ符å·æ¯ç©ºç½ç¬¦å·ï¼å¹é ææç空ç½å符ï¼åªéå¨æ份å¨å´å ä¸ä¸ä¸ªåæ¬å·å建ä¸ä¸ªç»ï¼ç¶åç¨ORO APIæååºå¼ã
1.7 å ¶å®ç¬¦å·
为ç®ä¾¿èµ·è§ï¼å¯ä»¥ä½¿ç¨ä¸äºä¸ºå¸¸è§æ£å表达å¼å建çå¿«æ·ç¬¦å·ãå¦ä»¥ä¸æ示ï¼
以ä¸æ¯æ´çåºæ¥çç¨åºï¼ä¾åèï¼
java正则表达式提取需要用到Matcher类。
正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern
= Pattern.compile("(\\d)[^\\d]*$")
Matcher matcher
= pattern.matcher(s)
if(matcher.find())
System.out.println
(matcher.group(1)); } }