锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩国产一区二区三区在线,亚洲国产视频久久,久久青青成人亚洲精品http://www.tkk7.com/abin/category/52752.htmlzh-cnThu, 18 Oct 2012 20:46:02 GMTThu, 18 Oct 2012 20:46:02 GMT60姝e垯-----------鍖歸厤鏁板瓧鍜屽瓧姣嶇粍鍚?/title><link>http://www.tkk7.com/abin/archive/2012/10/18/389851.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Thu, 18 Oct 2012 15:17:00 GMT</pubDate><guid>http://www.tkk7.com/abin/archive/2012/10/18/389851.html</guid><wfw:comment>http://www.tkk7.com/abin/comments/389851.html</wfw:comment><comments>http://www.tkk7.com/abin/archive/2012/10/18/389851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/abin/comments/commentRss/389851.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/abin/services/trackbacks/389851.html</trackback:ping><description><![CDATA[<div>鍖歸厤鏁板瓧鍜屽瓧姣嶇粍鍚堬紝鏁板瓧鍜屽瓧姣嶈嚦灝戝嚭鐜頒竴嬈★紝鍙尮閰?a,1q1,a1,a1a,1q2q2ws,w1w2e3r4r涔嬬被鐨勶紝涓嶅尮閰?1,aa,a,1,""錛岃繖縐嶇殑銆?br /><div>package com.abin.lee.servlet.regex;</div><div></div><div>import java.util.regex.Matcher;</div><div>import java.util.regex.Pattern;</div><div></div><div>public class MyRegex {</div><div><span style="white-space:pre"> </span>public static boolean StringResult(String str)throws Exception{</div><div><span style="white-space:pre"> </span>String regex="^(\\d+[a-z]+[0-9a-z]*)|([a-z]+\\d[0-9a-z]*)$";</div><div>//<span style="white-space:pre"> </span>String regex="^(\\d+[a-z]{1}[0-9a-zA-Z]*)|([a-z]+\\d[0-9a-zA-Z]*)$";</div><div><span style="white-space:pre"> </span>Pattern pattern=Pattern.compile(regex);</div><div><span style="white-space:pre"> </span>Matcher matcher=pattern.matcher(str);</div><div><span style="white-space:pre"> </span>boolean flag=matcher.matches();</div><div><span style="white-space:pre"> </span>return flag;</div><div><span style="white-space:pre"> </span>}</div><div><span style="white-space:pre"> </span>public static void main(String[] args) throws Exception{</div><div><span style="white-space:pre"> </span>String str="aa1as12ds3232ds2d22";</div><div><span style="white-space:pre"> </span>boolean result=StringResult(str);</div><div><span style="white-space:pre"> </span>System.out.println("result="+result);</div><div><span style="white-space:pre"> </span>}</div><div>}</div><div></div></div><img src ="http://www.tkk7.com/abin/aggbug/389851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/abin/" target="_blank">abing</a> 2012-10-18 23:17 <a href="http://www.tkk7.com/abin/archive/2012/10/18/389851.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java 閭鍜岀數璇濆彿鐮佹鍒?/title><link>http://www.tkk7.com/abin/archive/2012/10/12/389453.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Fri, 12 Oct 2012 03:12:00 GMT</pubDate><guid>http://www.tkk7.com/abin/archive/2012/10/12/389453.html</guid><wfw:comment>http://www.tkk7.com/abin/comments/389453.html</wfw:comment><comments>http://www.tkk7.com/abin/archive/2012/10/12/389453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/abin/comments/commentRss/389453.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/abin/services/trackbacks/389453.html</trackback:ping><description><![CDATA[<div>package org.abin.lee.basic.regex;</div><div></div><div>import java.util.regex.Matcher;</div><div>import java.util.regex.Pattern;</div><div></div><div>public class MyRegex {</div><div><span style="white-space:pre"> </span>public static boolean getResult(String future){</div><div><span style="white-space:pre"> </span>boolean result=false;</div><div><span style="white-space:pre"> </span>String regex="^[0-9a-zA-Z_]+@?[0-9a-zA-Z_]+.[a-zA-z]+$";</div><div>//<span style="white-space:pre"> </span>String regex="^1(3[4-9]?|5[018-9]?|8[07-9]?)[0-9]{8}$";</div><div><span style="white-space:pre"> </span>Pattern pattern=Pattern.compile(regex);</div><div><span style="white-space:pre"> </span>Matcher matcher=pattern.matcher(future);</div><div><span style="white-space:pre"> </span>result=matcher.matches();</div><div><span style="white-space:pre"> </span>return result;</div><div><span style="white-space:pre"> </span>}</div><div><span style="white-space:pre"> </span>public static void main(String[] args) {</div><div><span style="white-space:pre"> </span>boolean flag=false;</div><div><span style="white-space:pre"> </span>String future="varyall@tom.com";</div><div>//<span style="white-space:pre"> </span>String future="13588844873";</div><div><span style="white-space:pre"> </span>flag=getResult(future);</div><div><span style="white-space:pre"> </span>System.out.println("flag="+flag);</div><div><span style="white-space:pre"> </span>}</div><div></div><div>}</div><div></div><img src ="http://www.tkk7.com/abin/aggbug/389453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/abin/" target="_blank">abing</a> 2012-10-12 11:12 <a href="http://www.tkk7.com/abin/archive/2012/10/12/389453.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> 鐢佃瘽鍙風爜姝e垯http://www.tkk7.com/abin/archive/2012/10/11/389439.htmlabingabingThu, 11 Oct 2012 15:36:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389439.htmlhttp://www.tkk7.com/abin/comments/389439.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389439.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389439.htmlhttp://www.tkk7.com/abin/services/trackbacks/389439.htmlpublic interface RegExpConst {
/**
* 鎵嬫満鍙風爜
* 縐誨姩錛?34[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* 鑱旈氾細130,131,132,152,155,156,185,186
* 鐢典俊錛?33,1349,153,180,189
*/
String MOBILE = "^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
/**
* 涓浗縐誨姩錛欳hina Mobile
* 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
*/
String CM = "^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
/**
* 涓浗鑱旈氾細China Unicom
* 130,131,132,152,155,156,185,186
*/
String CU = "^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
* 涓浗鐢典俊錛欳hina Telecom
* 133,1349,153,180,189
*/
String CT = "^1((33|53|8[09])[0-9]|349)\\d{7}$";
/**
* 澶ч檰鍦板尯鍥鴻瘽鍙婂皬鐏甸?/div>
* 鍖哄彿錛?10,020,021,022,023,024,025,027,028,029
* 鍙風爜錛氫竷浣嶆垨鍏綅
*/
String PHS = "^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
}


abing 2012-10-11 23:36 鍙戣〃璇勮
]]>鎴戠殑姝e垯琛ㄨ揪寮?/title><link>http://www.tkk7.com/abin/archive/2012/10/10/389269.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Tue, 09 Oct 2012 16:22:00 GMT</pubDate><guid>http://www.tkk7.com/abin/archive/2012/10/10/389269.html</guid><wfw:comment>http://www.tkk7.com/abin/comments/389269.html</wfw:comment><comments>http://www.tkk7.com/abin/archive/2012/10/10/389269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/abin/comments/commentRss/389269.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/abin/services/trackbacks/389269.html</trackback:ping><description><![CDATA[<div>package com.abin.lee.servlet.regex;</div><div></div><div>import java.util.regex.Matcher;</div><div>import java.util.regex.Pattern;</div><div></div><div>public class RegexTest {</div><div><span style="white-space:pre"> </span>public static boolean isRight(String validate){</div><div><span style="white-space:pre"> </span>String regex="/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/";//閭姝e垯1</div><div>//<span style="white-space:pre"> </span>String regex="(^[\\w]*@[a-zA-Z]+[.][a-zA-Z]+$)";//閭姝e垯1</div><div>//<span style="white-space:pre"> </span>String regex="(^13[0-9]{9}$)|(^15[0-9]{9}$)|(^18[0-9]{9}$)";//鐢佃瘽鍙風爜姝e垯</div><div><span style="white-space:pre"> </span>Pattern pattern=Pattern.compile(regex);</div><div><span style="white-space:pre"> </span>Matcher matcher=pattern.matcher(validate);</div><div><span style="white-space:pre"> </span>boolean flag=matcher.matches();</div><div><span style="white-space:pre"> </span>return flag;</div><div><span style="white-space:pre"> </span>}</div><div><span style="white-space:pre"> </span>public static void main(String[] args) {</div><div><span style="white-space:pre"> </span>String validate="varyall@tom.com";</div><div><span style="white-space:pre"> </span>boolean flag=isRight(validate);</div><div><span style="white-space:pre"> </span>System.out.println("flag="+flag);</div><div><span style="white-space:pre"> </span>}</div><div></div><div>}</div><div></div><img src ="http://www.tkk7.com/abin/aggbug/389269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/abin/" target="_blank">abing</a> 2012-10-10 00:22 <a href="http://www.tkk7.com/abin/archive/2012/10/10/389269.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java姝e垯琛ㄨ揪寮忓疄渚嬭瑙? http://www.tkk7.com/abin/archive/2012/10/09/389238.htmlabingabingTue, 09 Oct 2012 05:29:00 GMThttp://www.tkk7.com/abin/archive/2012/10/09/389238.htmlhttp://www.tkk7.com/abin/comments/389238.htmlhttp://www.tkk7.com/abin/archive/2012/10/09/389238.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389238.htmlhttp://www.tkk7.com/abin/services/trackbacks/389238.html

鍒涘緩姝e垯琛ㄨ揪寮?/h3>

浣犲彲浠ヤ粠姣旇緝綆鍗曠殑涓滆タ鍏ユ墜瀛︿範姝e垯琛ㄨ揪寮忋傝鎯沖叏闈㈠湴鎺屾彙鎬庢牱鏋勫緩姝e垯琛ㄨ揪寮忥紝鍙互鍘葷湅JDK 鏂囨。鐨刯ava.util.regex 鐨凱attern 綾葷殑鏂囨。銆?/p>
瀛楃
B 瀛楃B
\xhh 16榪涘埗鍊?xhh 鎵琛ㄧず鐨勫瓧絎?/td>
\uhhhh 16榪涘埗鍊?xhhhh 鎵琛ㄧず鐨刄nicode瀛楃
\t Tab
\n 鎹㈣絎?/td>
\r 鍥炶濺絎?/td>
\f 鎹㈤〉絎?/td>
\e Escape

姝e垯琛ㄨ揪寮忕殑寮哄ぇ浣撶幇鍦ㄥ畠鑳藉畾涔夊瓧絎﹂泦(character class)銆備笅闈㈡槸涓浜涙渶甯歌鐨勫瓧絎﹂泦鍙婂叾瀹氫箟鐨勬柟寮忥紝姝ゅ榪樻湁涓浜涢瀹氫箟鐨勫瓧絎﹂泦錛?/p>
瀛楃闆?
. 琛ㄧず浠繪剰涓涓瓧絎?
[abc] 琛ㄧず瀛楃a 錛宐 錛宑 涓殑浠繪剰涓涓?涓巃|b|c 鐩稿悓)
[^abc] 闄 錛宐 錛宑 涔嬪鐨勪換鎰忎竴涓瓧絎?鍚﹀畾)
[a-zA-Z] 浠巃 鍒皕 鎴朅 鍒癦 褰撲腑鐨勪換鎰忎竴涓瓧絎?鑼冨洿)
[abc[hij]] a,b,c,h,i,j 涓殑浠繪剰涓涓瓧絎?涓巃|b|c|h|i|j 鐩稿悓)(騫墮泦)
[a-z&&[hij]] h,i,j 涓殑涓涓?浜ら泦)
\s 絀烘牸瀛楃(絀烘牸閿? tab, 鎹㈣, 鎹㈤〉, 鍥炶濺)
\S 闈炵┖鏍煎瓧絎?[^\s] )
\d 涓涓暟瀛楋紝涔熷氨鏄痆0-9]
\D 涓涓潪鏁板瓧鐨勫瓧絎︼紝涔熷氨鏄痆^0-9]
\w 涓涓崟璇嶅瓧絎?word character)錛屽嵆[a-zA-Z_0-9]
\W 涓涓潪鍗曡瘝鐨勫瓧絎︼紝[^\w]

濡傛灉浣犵敤榪囧叾瀹冭璦鐨勬鍒欒〃杈懼紡錛岄偅涔堜綘涓鐪煎氨鑳界湅鍑哄弽鏂滄潬鐨勪笌浼椾笉鍚屻傚湪鍏跺畠璇█閲岋紝"\\ "鐨勬剰鎬濇槸"鎴戝彧鏄鍦ㄦ鍒欒〃杈懼紡閲屾彃鍏ヤ竴涓弽鏂滄潬銆傛病浠涔堢壒鍒殑鎰忔濄?浣嗘槸鍦↗ava閲岋紝"\\ "鐨勬剰鎬濇槸"鎴戣鎻掑叆涓涓鍒欒〃杈懼紡鐨勫弽鏂滄潬錛屾墍浠ヨ窡鍦ㄥ畠鍚庨潰鐨勯偅涓瓧絎︾殑鎰忔濆氨鍙樹簡銆?涓句緥鏉ヨ錛屽鏋滀綘鎯寵〃紺轟竴涓垨鏇村鐨?鍗曡瘝瀛楃"錛岄偅涔堣繖涓鍒欒〃杈懼紡灝卞簲璇ユ槸"\\w+ "銆傚鏋滀綘瑕佹彃鍏ヤ竴涓弽鏂滄潬錛岄偅灝卞緱鐢?\\\\ "銆備笉榪囧儚鎹㈣錛岃煩鏍間箣綾葷殑榪樻槸鍙敤涓鏍瑰弽鏂滄潬錛?\n\t"銆?/p>

榪欓噷鍙粰浣犺涓涓緥瀛愶紱浣犲簲璇DK 鏂囨。鐨刯ava.util.regex.Pattern 鍔犲埌鏀惰棌澶歸噷錛岃繖鏍峰氨鑳藉緢瀹規槗鍦版壘鍒板悇縐嶆鍒欒〃杈懼紡鐨勬ā寮忎簡銆?/p>
閫昏緫榪愮畻絎?
XY X 鍚庨潰璺熺潃 Y
X|Y X鎴朰
(X) 涓涓?瑕佸尮閰嶇殑緇?capturing group)". 浠ュ悗鍙互鐢╘i鏉ヨ〃紺虹i涓鍖歸厤鐨勭粍銆?/td>
杈圭晫鍖歸厤絎?
^ 涓琛岀殑寮濮?
$ 涓琛岀殑緇撳熬
\b 涓涓崟璇嶇殑杈圭晫
\B 涓涓潪鍗曡瘝鐨勮竟鐣?
\G 鍓嶄竴涓尮閰嶇殑緇撴潫

涓句竴涓叿浣撲竴浜涚殑渚嬪瓙銆備笅闈㈣繖浜涙鍒欒〃杈懼紡閮芥槸鍚堟硶鐨勶紝鑰屼笖閮借兘鍖歸厤"Rudolph"錛?/p>

Rudolph [rR]udolph [rR][aeiou][a-z]ol.* R.*

鏁伴噺琛ㄧず絎?/h3>

"鏁伴噺琛ㄧず絎?quantifier)"鐨勪綔鐢ㄦ槸瀹氫箟妯″紡搴旇鍖歸厤澶氬皯涓瓧絎︺?/p>

  • Greedy(璐┆鐨?錛?闄ら潪鍙︽湁琛ㄧず錛屽惁鍒欐暟閲忚〃紺虹閮芥槸greedy鐨勩侴reedy鐨勮〃杈懼紡浼氫竴鐩村尮閰嶄笅鍘伙紝鐩村埌鍖歸厤涓嶄笅鍘諱負姝€?span style="text-decoration: underline">(濡傛灉浣犲彂鐜拌〃杈懼紡鍖歸厤鐨勭粨鏋滀笌棰勬湡鐨勪笉絎? 錛屽緢鏈夊彲鑳芥槸鍥犱負錛屼綘浠ヤ負琛ㄨ揪寮忎細鍙尮閰嶅墠闈㈠嚑涓瓧絎︼紝鑰屽疄闄呬笂瀹冩槸greedy鐨勶紝鍥犳浼氫竴鐩村尮閰嶄笅鍘匯?
  • Reluctant(鍕夊己鐨?錛?鐢ㄩ棶鍙瘋〃紺猴紝瀹冧細鍖歸厤鏈灝戠殑瀛楃銆備篃縐頒負lazy, minimal matching, non-greedy, 鎴杣ngreedy銆?
  • Possessive(鍗犳湁鐨?錛? 鐩墠鍙湁Java鏀寔(鍏跺畠璇█閮戒笉鏀寔)銆傚畠鏇村姞鍏堣繘錛屾墍浠ヤ綘鍙兘榪樹笉澶細鐢ㄣ傜敤姝e垯琛ㄨ揪寮忓尮閰嶅瓧絎︿覆鐨勬椂鍊欎細浜х敓寰堝涓棿鐘舵侊紝(涓鑸殑鍖歸厤寮曟搸浼氫繚瀛樿繖縐嶄腑闂寸姸鎬侊紝) 榪欐牱鍖歸厤澶辮觸鐨勬椂鍊欏氨鑳藉師璺繑鍥炰簡銆傚崰鏈夊瀷鐨勮〃杈懼紡涓嶄繚瀛樿繖縐嶄腑闂寸姸鎬侊紝鍥犳涔熷氨涓嶄細鍥炲ご閲嶆潵浜嗐傚畠鑳介槻姝㈡鍒欒〃杈懼紡鐨勫け鎺э紝鍚屾椂涔熻兘鎻愰珮榪愯鐨勬晥鐜囥?
Greedy Reluctant Possessive 鍖歸厤
X? X?? X?+ 鍖歸厤涓涓垨闆朵釜X
X* X*? X*+ 鍖歸厤闆舵垨澶氫釜X
X+ X+? X++ 鍖歸厤涓涓垨澶氫釜X
X{n} X{n}? X{n}+ 鍖歸厤姝eソn涓猉
X{n,} X{n,}? X{n,}+ 鍖歸厤鑷沖皯n涓猉
X{n,m} X{n,m}? X{n,m}+ 鍖歸厤鑷沖皯n涓紝鑷沖m涓猉

鍐嶆彁閱掍竴涓嬶紝瑕佹兂璁╄〃杈懼紡鐓т綘鐨勬剰鎬濆幓榪愯錛屼綘搴旇鐢ㄦ嫭鍙鋒妸'X'鎷搗鏉ャ傛瘮鏂硅錛?/p>

abc+

浼間箮榪欎釜琛ㄨ揪寮忚兘鍖歸厤涓涓垨鑻ュ共涓?abc'錛屼絾鏄鏋滀綘鐪熺殑鐢ㄥ畠鍘誨尮閰?abcabcabc'鐨勮瘽錛屽疄闄呬笂鍙細鎵懼埌涓変釜瀛楃銆傚洜涓鴻繖涓〃杈懼紡鐨勬剰鎬濇槸'ab'鍚庤竟璺熺潃涓涓垨澶氫釜'c'銆傝鎯沖尮閰嶄竴涓垨澶氫釜瀹屾暣鐨?abc'錛屼綘搴旇榪欐牱錛?/p>

(abc)+

姝e垯琛ㄨ揪寮忚兘杞昏屾槗涓懼湴鎶婁綘緇欒嶄簡錛涜繖鏄竴縐嶅緩绔嬪湪Java 涔嬩笂鐨勬柊璇█銆?/p>

CharSequence

JDK 1.4瀹氫箟浜嗕竴涓柊鐨勬帴鍙o紝鍙獵harSequence 銆傚畠鎻愪緵浜哠tring 鍜孲tringBuffer 榪欎袱涓被鐨勫瓧絎﹀簭鍒楃殑鎶借薄錛?/p>

interface  CharSequence {   charAt(int  i);   length();   subSequence(int  start, int  end);   toString(); }

涓轟簡瀹炵幇榪欎釜鏂扮殑CharSequence 鎺ュ彛錛孲tring 錛孲tringBuffer 浠ュ強CharBuffer 閮戒綔浜嗕慨鏀廣傚緢澶氭鍒欒〃杈懼紡鐨勬搷浣滈兘瑕佹嬁CharSequence 浣滃弬鏁般?/p>

Pattern 鍜孧atcher

鍏堢粰涓涓緥瀛愩備笅闈㈣繖孌電▼搴忓彲浠ユ祴璇曟鍒欒〃杈懼紡鏄惁鍖歸厤瀛楃涓層傜涓涓弬鏁版槸瑕佸尮閰嶇殑瀛楃涓詫紝鍚庨潰鏄鍒欒〃杈懼紡銆傛鍒欒〃杈懼紡鍙互鏈夊涓傚湪Unix/Linux鐜涓嬶紝鍛戒護琛屼笅鐨勬鍒欒〃杈懼紡榪樺繀欏葷敤寮曞彿銆?/p>

褰撲綘鍒涘緩姝e垯琛ㄨ揪寮忔椂錛屽彲浠ョ敤榪欎釜紼嬪簭鏉ュ垽鏂畠鏄笉鏄細鎸夌収浣犵殑瑕佹眰宸ヤ綔銆?/p>
//: c12:TestRegularExpression.java  // Allows you to easly try out regular expressions.  // {Args: abcabcabcdefabc "abc+" "(abc)+" "(abc){2,}" }  import  java.util.regex.*; public  class  TestRegularExpression {   public  static  void  main(String[] args) {     if (args.length < 2) {       System.out.println("Usage:\n"  +         "java TestRegularExpression "  +         "characterSequence regularExpression+" );       System.exit(0);     }     System.out.println("Input: \" " + args[0] + " \"" );     for (int  i = 1; i < args.length; i++) {       System.out.println(         "Regular expression: \" " + args[i] + " \"" );       Pattern p = Pattern.compile(args[i]);       Matcher m = p.matcher(args[0]);       while (m.find()) {         System.out.println("Match \" " + m.group() +           "\"  at positions " +           m.start() + "-"  + (m.end() - 1));       }     }   } } ///:~ 

Java 鐨勬鍒欒〃杈懼紡鏄敱java.util.regex 鐨凱attern 鍜孧atcher 綾誨疄鐜扮殑銆侾attern 瀵硅薄琛ㄧず緇忕紪璇戠殑姝e垯琛ㄨ揪寮忋傞潤鎬佺殑compile( ) 鏂規硶璐熻矗灝嗚〃紺烘鍒欒〃杈懼紡鐨勫瓧絎︿覆緙栬瘧鎴怭attern 瀵硅薄銆傛濡備笂榪頒緥紼嬫墍紺虹殑錛屽彧瑕佺粰Pattern 鐨刴atcher( ) 鏂規硶閫佷竴涓瓧絎︿覆灝辮兘鑾峰彇涓涓狹atcher 瀵硅薄銆傛澶栵紝Pattern 榪樻湁涓涓兘蹇熷垽鏂兘鍚﹀湪input 閲岄潰鎵懼埌regex 鐨?娉ㄦ剰錛屽師鏂囨湁璇紝婕忎簡鏂規硶鍚?

static  boolean  matches( regex,  input)

浠ュ強鑳借繑鍥濻tring 鏁扮粍鐨剆plit( ) 鏂規硶錛屽畠鑳界敤regex 鎶婂瓧絎︿覆鍒嗗壊寮鏉ャ?/p>

鍙緇橮attern.matcher( ) 鏂規硶浼犱竴涓瓧絎︿覆灝辮兘鑾峰緱Matcher 瀵硅薄浜嗐傛帴涓嬫潵灝辮兘鐢∕atcher 鐨勬柟娉曟潵鏌ヨ鍖歸厤鐨勭粨鏋滀簡銆?/p>

boolean  matches() boolean  lookingAt() boolean  find() boolean  find(int  start)

matches( ) 鐨勫墠鎻愭槸Pattern 鍖歸厤鏁翠釜瀛楃涓詫紝鑰宭ookingAt( ) 鐨勬剰鎬濇槸Pattern 鍖歸厤瀛楃涓茬殑寮澶淬?

find( )

Matcher.find( ) 鐨勫姛鑳芥槸鍙戠幇CharSequence 閲岀殑錛屼笌pattern鐩稿尮閰嶇殑澶氫釜瀛楃搴忓垪銆備緥濡傦細

//: c12:FindDemo.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; import  java.util.*; public  class  FindDemo {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) {     Matcher m = Pattern.compile("\\w+" )       .matcher("Evening is full of the linnet's wings" );     while (m.find())       System.out.println(m.group());     int  i = 0;     while (m.find(i)) {       System.out.print(m.group() + " " );       i++;     }     monitor.expect(new  String[] {       "Evening" ,       "is" ,       "full" ,       "of" ,       "the" ,       "linnet" ,       "s" ,       "wings" ,       "Evening vening ening ning ing ng g is is s full "  +       "full ull ll l of of f the the he e linnet linnet "  +       "innet nnet net et t s s wings wings ings ngs gs s "      });   } } ///:~ 

"\\w+ "鐨勬剰鎬濇槸"涓涓垨澶氫釜鍗曡瘝瀛楃"錛屽洜姝ゅ畠浼氬皢瀛楃涓茬洿鎺ュ垎瑙f垚鍗曡瘝銆俧ind( ) 鍍忎竴涓凱浠e櫒錛屼粠澶村埌灝炬壂鎻忎竴閬嶅瓧絎︿覆銆傜浜屼釜find( ) 鏄甫int 鍙傛暟鐨勶紝姝e浣犳墍鐪嬪埌鐨勶紝瀹冧細鍛婅瘔鏂規硶浠庡摢閲屽紑濮嬫壘——鍗充粠鍙傛暟浣嶇疆寮濮嬫煡鎵俱?/p>

Groups

Group鏄寚閲岀敤鎷彿鎷搗鏉ョ殑錛岃兘琚悗闈㈢殑琛ㄨ揪寮忚皟鐢ㄧ殑姝e垯琛ㄨ揪寮忋侴roup 0 琛ㄧず鏁翠釜琛ㄨ揪寮忥紝group 1琛ㄧず絎竴涓鎷搗鏉ョ殑group錛屼互姝ょ被鎺ㄣ傛墍浠ワ紱

A(B(C))D

閲岄潰鏈変笁涓猤roup錛歡roup 0鏄疉BCD 錛?group 1鏄疊C 錛実roup 2鏄疌 銆?/p>

浣犲彲浠ョ敤涓嬭堪Matcher 鏂規硶鏉ヤ嬌鐢╣roup錛?/p>

public int groupCount( ) 榪斿洖matcher瀵硅薄涓殑group鐨勬暟鐩備笉鍖呮嫭group0銆?/p>

public String group( ) 榪斿洖涓婃鍖歸厤鎿嶄綔(姣旀柟璇磃ind( ) )鐨刧roup 0(鏁翠釜鍖歸厤)

public String group(int i) 榪斿洖涓婃鍖歸厤鎿嶄綔鐨勬煇涓猤roup銆傚鏋滃尮閰嶆垚鍔燂紝浣嗘槸娌¤兘鎵懼埌group錛屽垯榪斿洖null銆?/p>

public int start(int group) 榪斿洖涓婃鍖歸厤鎵鎵懼埌鐨勶紝group鐨勫紑濮嬩綅緗?/p>

public int end(int group) 榪斿洖涓婃鍖歸厤鎵鎵懼埌鐨勶紝group鐨勭粨鏉熶綅緗紝鏈鍚庝竴涓瓧絎︾殑涓嬫爣鍔犱竴銆?/p>

涓嬮潰鎴戜滑涓句竴浜沢roup鐨勪緥瀛愶細

//: c12:Groups.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; public  class  Groups {   private  static  Test monitor = new  Test();   static  public  final  String poem =     "Twas brillig, and the slithy toves\n"  +     "Did gyre and gimble in the wabe.\n"  +     "All mimsy were the borogoves,\n"  +     "And the mome raths outgrabe.\n\n"  +     "Beware the Jabberwock, my son,\n"  +     "The jaws that bite, the claws that catch.\n"  +     "Beware the Jubjub bird, and shun\n"  +     "The frumious Bandersnatch." ;   public  static  void  main(String[] args) {     Matcher m =       Pattern.compile("(?m)(\\S+)\\s+((\\S+)\\s+(\\S+))$" )         .matcher(poem);     while (m.find()) {       for (int  j = 0; j <= m.groupCount(); j++)         System.out.print("["  + m.group(j) + "]" );       System.out.println();     }     monitor.expect(new  String[]{       "[the slithy toves]"  +       "[the][slithy toves][slithy][toves]" ,       "[in the wabe.][in][the wabe.][the][wabe.]" ,       "[were the borogoves,]"  +       "[were][the borogoves,][the][borogoves,]" ,       "[mome raths outgrabe.]"  +       "[mome][raths outgrabe.][raths][outgrabe.]" ,       "[Jabberwock, my son,]"  +       "[Jabberwock,][my son,][my][son,]" ,       "[claws that catch.]"  +       "[claws][that catch.][that][catch.]" ,       "[bird, and shun][bird,][and shun][and][shun]" ,       "[The frumious Bandersnatch.][The]"  +       "[frumious Bandersnatch.][frumious][Bandersnatch.]"      });   } } ///:~ 

榪欓璇楁槸Through the Looking Glass 鐨勶紝Lewis Carroll鐨?Jabberwocky"鐨勭涓閮ㄥ垎銆傚彲浠ョ湅鍒拌繖涓鍒欒〃杈懼紡閲屾湁寰堝鐢ㄦ嫭鍙鋒嫭璧鋒潵鐨刧roup錛屽畠鏄敱浠繪剰澶氫釜榪炵畫鐨勯潪絀哄瓧絎?'\S+ ')鍜屼換鎰忓涓繛緇殑絀烘牸瀛楃('\s+ ')鎵緇勬垚鐨勶紝鍏舵渶緇堢洰鐨勬槸瑕佹崟鑾鋒瘡琛岀殑鏈鍚庝笁涓崟璇嶏紱'$ '琛ㄧず涓琛岀殑緇撳熬銆備絾鏄?$ '閫氬父琛ㄧず鏁翠釜瀛楃涓茬殑緇撳熬錛屾墍浠ヨ繖閲岃鏄庣‘鍦板憡璇夋鍒欒〃杈懼紡娉ㄦ剰鎹㈣絎︺傝繖涓鐐規槸鐢?(?m) '鏍囧織瀹屾垚鐨?妯″紡鏍囧織浼氳繃涓浼氳瑙?銆?/p>

start( )鍜宔nd( )

濡傛灉鍖歸厤鎴愬姛錛宻tart( ) 浼氳繑鍥炴嬈″尮閰嶇殑寮濮嬩綅緗紝end( ) 浼氳繑鍥炴嬈″尮閰嶇殑緇撴潫浣嶇疆錛屽嵆鏈鍚庝竴涓瓧絎︾殑涓嬫爣鍔犱竴銆傚鏋滀箣鍓嶇殑鍖歸厤涓嶆垚鍔?鎴栬呮病鍖歸厤)錛岄偅涔堟棤璁烘槸璋冪敤start( ) 榪樻槸end( ) 錛岄兘浼氬紩鍙戜竴涓狪llegalStateException 銆備笅闈㈣繖孌電▼搴忚繕婕旂ず浜唌atches( ) 鍜宭ookingAt( ) 錛?/p>
//: c12:StartEnd.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; public  class  StartEnd {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) {     String[] input = new  String[] {       "Java has regular expressions in 1.4" ,       "regular expressions now expressing in Java" ,       "Java represses oracular expressions"      };     Pattern       p1 = Pattern.compile("re\\w*" ),       p2 = Pattern.compile("Java.*" );     for (int  i = 0; i < input.length; i++) {       System.out.println("input "  + i + ": "  + input[i]);       Matcher         m1 = p1.matcher(input[i]),         m2 = p2.matcher(input[i]);       while (m1.find())         System.out.println("m1.find() '"  + m1.group() +           "' start = " + m1.start() + " end = "  + m1.end());       while (m2.find())         System.out.println("m2.find() '"  + m2.group() +           "' start = " + m2.start() + " end = "  + m2.end());       if (m1.lookingAt()) // No reset() necessary          System.out.println("m1.lookingAt() start = "            + m1.start() + " end = "  + m1.end());       if (m2.lookingAt())         System.out.println("m2.lookingAt() start = "            + m2.start() + " end = "  + m2.end());       if (m1.matches()) // No reset() necessary          System.out.println("m1.matches() start = "            + m1.start() + " end = "  + m1.end());       if (m2.matches())         System.out.println("m2.matches() start = "            + m2.start() + " end = "  + m2.end());     }     monitor.expect(new  String[] {       "input 0: Java has regular expressions in 1.4" ,       "m1.find() 'regular' start = 9 end = 16" ,       "m1.find() 'ressions' start = 20 end = 28" ,       "m2.find() 'Java has regular expressions in 1.4'"  +       " start = 0 end = 35" ,       "m2.lookingAt() start = 0 end = 35" ,       "m2.matches() start = 0 end = 35" ,       "input 1: regular expressions now "  +       "expressing in Java" ,       "m1.find() 'regular' start = 0 end = 7" ,       "m1.find() 'ressions' start = 11 end = 19" ,       "m1.find() 'ressing' start = 27 end = 34" ,       "m2.find() 'Java' start = 38 end = 42" ,       "m1.lookingAt() start = 0 end = 7" ,       "input 2: Java represses oracular expressions" ,       "m1.find() 'represses' start = 5 end = 14" ,       "m1.find() 'ressions' start = 27 end = 35" ,       "m2.find() 'Java represses oracular expressions' "  +       "start = 0 end = 35" ,       "m2.lookingAt() start = 0 end = 35" ,       "m2.matches() start = 0 end = 35"      });   } } ///:~ 

娉ㄦ剰錛屽彧瑕佸瓧絎︿覆閲屾湁榪欎釜妯″紡錛宖ind( ) 灝辮兘鎶婂畠緇欐壘鍑烘潵錛屼絾鏄痩ookingAt( ) 鍜宮atches( ) 錛屽彧鏈夊湪瀛楃涓蹭笌姝e垯琛ㄨ揪寮忎竴寮濮嬪氨鐩稿尮閰嶇殑鎯呭喌涓嬫墠鑳借繑鍥瀟rue 銆俶atches( ) 鎴愬姛鐨勫墠鎻愭槸姝e垯琛ㄨ揪寮忎笌瀛楃涓插畬鍏ㄥ尮閰嶏紝鑰宭ookingAt( ) [67] 鎴愬姛鐨勫墠鎻愭槸錛屽瓧絎︿覆鐨勫紑濮嬮儴鍒嗕笌姝e垯琛ㄨ揪寮忕浉鍖歸厤銆?/p>

鍖歸厤鐨勬ā寮?Pattern flags)

compile( ) 鏂規硶榪樻湁涓涓増鏈紝瀹冮渶瑕佷竴涓帶鍒舵鍒欒〃杈懼紡鐨勫尮閰嶈涓虹殑鍙傛暟錛?/p>

Pattern Pattern.compile(String regex, int  flag)

flag 鐨勫彇鍊艱寖鍥村涓嬶細

緙栬瘧鏍囧織 鏁堟灉
Pattern.CANON_EQ 褰撲笖浠呭綋涓や釜瀛楃鐨?姝h鍒嗚В(canonical decomposition)"閮藉畬鍏ㄧ浉鍚岀殑鎯呭喌涓嬶紝鎵嶈瀹氬尮閰嶃傛瘮濡傜敤浜嗚繖涓爣蹇椾箣鍚庯紝琛ㄨ揪寮?a\u030A"浼氬尮閰??"銆傞粯璁ゆ儏鍐典笅錛屼笉鑰冭檻"瑙勮寖鐩哥瓑鎬?canonical equivalence)"銆?
Pattern.CASE_INSENSITIVE
(?i)
榛樿鎯呭喌涓嬶紝澶у皬鍐欎笉鏄庢劅鐨勫尮閰嶅彧閫傜敤浜嶶S-ASCII瀛楃闆嗐傝繖涓爣蹇楄兘璁╄〃杈懼紡蹇界暐澶у皬鍐欒繘琛屽尮閰嶃傝鎯沖Unicode瀛楃榪涜澶у皬涓嶆槑鎰熺殑鍖歸厤錛屽彧瑕佸皢UNICODE_CASE 涓庤繖涓爣蹇楀悎璧鋒潵灝辮浜嗐?
Pattern.COMMENTS
(?x)
鍦ㄨ繖縐嶆ā寮忎笅錛屽尮閰嶆椂浼氬拷鐣?姝e垯琛ㄨ揪寮忛噷鐨?絀烘牸瀛楃(璇戣呮敞錛氫笉鏄寚琛ㄨ揪寮忛噷鐨?\\s"錛岃屾槸鎸囪〃杈懼紡閲岀殑絀烘牸錛宼ab錛屽洖杞︿箣綾?銆傛敞閲婁粠#寮濮嬶紝涓鐩村埌榪欒緇撴潫銆傚彲浠ラ氳繃宓屽叆寮忕殑鏍囧織鏉ュ惎鐢║nix琛屾ā寮忋?
Pattern.DOTALL
(?s)
鍦ㄨ繖縐嶆ā寮忎笅錛岃〃杈懼紡'.'鍙互鍖歸厤浠繪剰瀛楃錛屽寘鎷〃紺轟竴琛岀殑緇撴潫絎︺傞粯璁ゆ儏鍐典笅錛岃〃杈懼紡'.'涓嶅尮閰嶈鐨勭粨鏉熺銆?
Pattern.MULTILINE
(?m)
鍦ㄨ繖縐嶆ā寮忎笅錛?^'鍜?$'鍒嗗埆鍖歸厤涓琛岀殑寮濮嬪拰緇撴潫銆傛澶栵紝'^'浠嶇劧鍖歸厤瀛楃涓茬殑寮濮嬶紝'$'涔熷尮閰嶅瓧絎︿覆鐨勭粨鏉熴傞粯璁ゆ儏鍐典笅錛岃繖涓や釜琛ㄨ揪寮忎粎浠呭尮閰嶅瓧絎︿覆鐨勫紑濮嬪拰緇撴潫銆?
Pattern.UNICODE_CASE
(?u)
鍦ㄨ繖涓ā寮忎笅錛屽鏋滀綘榪樺惎鐢ㄤ簡CASE_INSENSITIVE 鏍囧織錛岄偅涔堝畠浼氬Unicode瀛楃榪涜澶у皬鍐欎笉鏄庢劅鐨勫尮閰嶃傞粯璁ゆ儏鍐典笅錛屽ぇ灝忓啓涓嶆槑鎰熺殑鍖歸厤鍙傜敤浜嶶S-ASCII瀛楃闆嗐?
Pattern.UNIX_LINES
(?d)
鍦ㄨ繖涓ā寮忎笅錛屽彧鏈?\n'鎵嶈璁や綔涓琛岀殑涓錛屽茍涓斾笌'.'錛?^'錛屼互鍙?$'榪涜鍖歸厤銆?

鍦ㄨ繖浜涙爣蹇楅噷闈紝Pattern.CASE_INSENSITIVE 錛孭attern.MULTILINE 錛屼互鍙奝attern.COMMENTS 鏄渶鏈夌敤鐨?鍏朵腑Pattern.COMMENTS 榪樿兘甯垜浠妸鎬濊礬鐞嗘竻妤氾紝騫朵笖/鎴栬呭仛鏂囨。)銆傛敞鎰忥紝浣犲彲浠ョ敤鍦ㄨ〃杈懼紡閲屾彃璁板彿鐨勬柟寮忔潵鍚敤緇濆ぇ澶氭暟鐨勬ā寮忋傝繖浜涜鍙峰氨鍦ㄤ笂闈㈤偅寮犺〃鐨勫悇涓爣蹇楃殑涓嬮潰銆備綘甯屾湜妯″紡浠庡摢閲屽紑濮嬪惎鍔紝灝卞湪鍝噷鎻掕鍙楓?/p>

鍙互鐢?OR" ('|')榪愮畻絎︽妸榪欎簺鏍囧織鍚堜嬌鐢細

//: c12:ReFlags.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; public  class  ReFlags {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) {     Pattern p =  Pattern.compile("^java" ,       Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);     Matcher m = p.matcher(       "java has regex\nJava has regex\n"  +       "JAVA has pretty good regular expressions\n"  +       "Regular expressions are in Java" );     while (m.find())       System.out.println(m.group());     monitor.expect(new  String[] {       "java" ,       "Java" ,       "JAVA"      });   } } ///:~ 

榪欐牱鍒涘緩鍑烘潵鐨勬鍒欒〃杈懼紡灝辮兘鍖歸厤浠?java"錛?Java"錛?JAVA"...寮澶寸殑瀛楃涓蹭簡銆傛澶栵紝濡傛灉瀛楃涓插垎濂藉嚑琛岋紝閭e畠榪樹細瀵規瘡涓琛屽仛鍖歸厤(鍖歸厤濮嬩簬瀛楃搴忓垪鐨勫紑濮嬶紝緇堜簬瀛楃搴忓垪褰撲腑鐨勮緇撴潫絎?銆傛敞鎰忥紝group( ) 鏂規硶浠呰繑鍥炲尮閰嶇殑閮ㄥ垎銆?/p>

split( )

鎵璋撳垎鍓叉槸鎸囧皢浠ユ鍒欒〃杈懼紡涓虹晫錛屽皢瀛楃涓插垎鍓叉垚String 鏁扮粍銆?/p>

String[] split(CharSequence charseq) String[] split(CharSequence charseq, int  limit)

榪欐槸涓縐嶆棦蹇張鏂逛究鍦板皢鏂囨湰鏍規嵁涓浜涘父瑙佺殑杈圭晫鏍囧織鍒嗗壊寮鏉ョ殑鏂規硶銆?/p>
//: c12:SplitDemo.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; import  java.util.*; public  class  SplitDemo {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) {     String input =       "This!!unusual use!!of exclamation!!points" ;     System.out.println(Arrays.asList(       Pattern.compile("!!" ).split(input)));     // Only do the first three:      System.out.println(Arrays.asList(       Pattern.compile("!!" ).split(input, 3)));     System.out.println(Arrays.asList(       "Aha! String has a split() built in!" .split(" " )));     monitor.expect(new  String[] {       "[This, unusual use, of exclamation, points]" ,       "[This, unusual use, of exclamation!!points]" ,       "[Aha!, String, has, a, split(), built, in!]"      });   } } ///:~ 

絎簩涓猻plit( ) 浼氶檺瀹氬垎鍓茬殑嬈℃暟銆?/p>

姝e垯琛ㄨ揪寮忔槸濡傛閲嶈錛屼互鑷充簬鏈変簺鍔熻兘琚姞榪涗簡String 綾伙紝鍏朵腑鍖呮嫭split( ) (宸茬粡鐪嬪埌浜?錛宮atches( ) 錛宺eplaceFirst( ) 浠ュ強replaceAll( ) 銆傝繖浜涙柟娉曠殑鍔熻兘鍚孭attern 鍜孧atcher 鐨勭浉鍚屻?

鏇挎崲鎿嶄綔

姝e垯琛ㄨ揪寮忓湪鏇挎崲鏂囨湰鏂歸潰鐗瑰埆鍦ㄨ銆備笅闈㈠氨鏄竴浜涙柟娉曪細

replaceFirst(String replacement) 灝嗗瓧絎︿覆閲岋紝絎竴涓笌妯″紡鐩稿尮閰嶇殑瀛愪覆鏇挎崲鎴恟eplacement 銆?

replaceAll(String replacement) 錛屽皢杈撳叆瀛楃涓查噷鎵鏈変笌妯″紡鐩稿尮閰嶇殑瀛愪覆鍏ㄩ儴鏇挎崲鎴恟eplacement 銆?/p>

appendReplacement(StringBuffer sbuf, String replacement) 瀵箂buf 榪涜閫愭鏇挎崲錛岃屼笉鏄儚replaceFirst( ) 鎴杛eplaceAll( ) 閭f牱錛屽彧鏇挎崲絎竴涓垨鍏ㄩ儴瀛愪覆銆傝繖鏄釜闈炲父閲嶈鐨勬柟娉曪紝鍥犱負瀹冨彲浠ヨ皟鐢ㄦ柟娉曟潵鐢熸垚replacement (replaceFirst( ) 鍜宺eplaceAll( ) 鍙厑璁哥敤鍥哄畾鐨勫瓧絎︿覆鏉ュ厖褰搑eplacement )銆傛湁浜嗚繖涓柟娉曪紝浣犲氨鍙互緙栫▼鍖哄垎group錛屼粠鑰屽疄鐜版洿寮哄ぇ鐨勬浛鎹㈠姛鑳姐?/p>

璋冪敤瀹宎ppendReplacement( ) 涔嬪悗錛屼負浜嗘妸鍓╀綑鐨勫瓧絎︿覆鎷瘋礉鍥炲幓錛屽繀欏昏皟鐢╝ppendTail(StringBuffer sbuf, String replacement) 銆?

涓嬮潰鎴戜滑鏉ユ紨紺轟竴涓嬫庢牱浣跨敤榪欎簺鏇挎崲鏂規硶銆傝鏄庝竴涓嬶紝榪欐紼嬪簭鎵澶勭悊鐨勫瓧絎︿覆鏄畠鑷繁寮澶撮儴鍒嗙殑娉ㄩ噴錛屾槸鐢ㄦ鍒欒〃杈懼紡鎻愬彇鍑烘潵騫跺姞浠ュ鐞嗕箣鍚庡啀浼犵粰鏇挎崲鏂規硶鐨勩?/p>
//: c12:TheReplacements.java  import  java.util.regex.*; import  java.io.*; import  com.bruceeckel.util.*; import  com.bruceeckel.simpletest.*; /*! Here's a block of text to use as input to     the regular expression matcher. Note that we'll     first extract the block of text by looking for     the special delimiters, then process the     extracted block. !*/  public  class  TheReplacements {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) throws  Exception {     String s = TextFile.read("TheReplacements.java" );     // Match the specially-commented block of text above:      Matcher mInput =       Pattern.compile(" /\\*!(.*)!\\* /" , Pattern.DOTALL)         .matcher(s);     if (mInput.find())       s = mInput.group(1); // Captured by parentheses      // Replace two or more spaces with a single space:      s = s.replaceAll(" {2,}" , " " );     // Replace one or more spaces at the beginning of each      // line with no spaces. Must enable MULTILINE mode:      s = s.replaceAll("(?m)^ +" , "" );     System.out.println(s);     s = s.replaceFirst("[aeiou]" , "(VOWEL1)" );     StringBuffer sbuf = new  StringBuffer();     Pattern p = Pattern.compile("[aeiou]" );     Matcher m = p.matcher(s);     // Process the find information as you      // perform the replacements:      while (m.find())       m.appendReplacement(sbuf, m.group().toUpperCase());     // Put in the remainder of the text:      m.appendTail(sbuf);     System.out.println(sbuf);     monitor.expect(new  String[]{       "Here's a block of text to use as input to" ,       "the regular expression matcher. Note that we'll" ,       "first extract the block of text by looking for" ,       "the special delimiters, then process the" ,       "extracted block. " ,       "H(VOWEL1)rE's A blOck Of tExt tO UsE As InpUt tO" ,       "thE rEgUlAr ExprEssIOn mAtchEr. NOtE thAt wE'll" ,       "fIrst ExtrAct thE blOck Of tExt by lOOkIng fOr" ,       "thE spEcIAl dElImItErs, thEn prOcEss thE" ,       "ExtrActEd blOck. "      });   } } ///:~ 

鎴戜滑鐢ㄥ墠闈粙緇嶇殑TextFile.read( ) 鏂規硶鏉ユ墦寮鍜岃鍙栨枃浠躲俶Input 鐨勫姛鑳芥槸鍖歸厤'/*! ' 鍜?'!*/ ' 涔嬮棿鐨勬枃鏈?娉ㄦ剰涓涓嬪垎緇勭敤鐨勬嫭鍙?銆傛帴涓嬫潵錛屾垜浠皢鎵鏈変袱涓互涓婄殑榪炵畫絀烘牸鍏ㄩ兘鏇挎崲鎴愪竴涓紝騫朵笖灝嗗悇琛屽紑澶寸殑絀烘牸鍏ㄩ兘鍘繪帀(涓轟簡璁╄繖涓鍒欒〃杈懼紡鑳藉鎵鏈夌殑琛岋紝鑰屼笉浠呬粎鏄涓琛岃搗浣滅敤錛屽繀欏誨惎鐢ㄥ琛屾ā寮?銆傝繖涓や釜鎿嶄綔閮界敤浜哠tring 鐨剅eplaceAll( ) (榪欓噷鐢ㄥ畠鏇存柟渚?銆傛敞鎰忥紝鐢變簬姣忎釜鏇挎崲鍙仛涓嬈★紝鍥犳闄や簡棰勭紪璇慞attern 涔嬪錛岀▼搴忔病鏈夐澶栫殑寮閿銆?/p>

replaceFirst( ) 鍙浛鎹㈢涓涓瓙涓層傛澶栵紝replaceFirst( ) 鍜宺eplaceAll( ) 鍙兘鐢ㄥ父閲?literal)鏉ユ浛鎹紝鎵浠ュ鏋滀綘姣忔鏇挎崲鐨勬椂鍊欒繕瑕佽繘琛屼竴浜涙搷浣滅殑璇濓紝瀹冧滑鏄棤鑳戒負鍔涚殑銆傜鍒拌繖縐嶆儏鍐碉紝浣犲緱鐢╝ppendReplacement( ) 錛屽畠鑳借浣犲湪榪涜鏇挎崲鐨勬椂鍊欐兂鍐欏灝戜唬鐮佸氨鍐欏灝戙傚湪涓婇潰閭f紼嬪簭閲岋紝鍒涘緩sbuf 鐨勮繃紼嬪氨鏄塯roup鍋氬鐞嗭紝涔熷氨鏄敤姝e垯琛ㄨ揪寮忔妸鍏冮煶瀛楁瘝鎵懼嚭鏉ワ紝鐒跺悗鎹㈡垚澶у啓鐨勮繃紼嬨傞氬父浣犲緱鍦ㄥ畬鎴愬叏閮ㄧ殑鏇挎崲涔嬪悗鎵嶈皟鐢╝ppendTail( ) 錛屼絾鏄鏋滆妯′豢replaceFirst( ) (鎴?replace n")鐨勬晥鏋滐紝浣犱篃鍙互鍙浛鎹竴嬈″氨璋冪敤appendTail( ) 銆傚畠浼氭妸鍓╀笅鐨勪笢瑗垮叏閮芥斁榪泂buf 銆?/p>

浣犺繕鍙互鍦╝ppendReplacement( ) 鐨剅eplacement 鍙傛暟閲岀敤"$g"寮曠敤宸叉崟鑾風殑group錛屽叾涓?g' 琛ㄧずgroup鐨勫彿鐮併備笉榪囪繖鏄負涓浜涙瘮杈冪畝鍗曠殑鎿嶄綔鍑嗗鐨勶紝鍥犺屽叾鏁堟灉鏃犳硶涓庝笂榪扮▼搴忕浉姣斻?/p>

reset( )

姝ゅ錛岃繕鍙互鐢╮eset( ) 鏂規硶緇欑幇鏈夌殑Matcher 瀵硅薄閰嶄笂涓柊鐨凜harSequence 銆?/p>
//: c12:Resetting.java  import  java.util.regex.*; import  java.io.*; import  com.bruceeckel.simpletest.*; public  class  Resetting {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) throws  Exception {     Matcher m = Pattern.compile("[frb][aiu][gx]" )       .matcher("fix the rug with bags" );     while (m.find())       System.out.println(m.group());     m.reset("fix the rig with rags" );     while (m.find())       System.out.println(m.group());     monitor.expect(new  String[]{       "fix" ,       "rug" ,       "bag" ,       "fix" ,       "rig" ,       "rag"      });   } } ///:~ 

濡傛灉涓嶇粰鍙傛暟錛宺eset( ) 浼氭妸Matcher 璁懼埌褰撳墠瀛楃涓茬殑寮濮嬪銆?/p>

姝e垯琛ㄨ揪寮忎笌Java I/O

鍒扮洰鍓嶄負姝紝浣犵湅鍒扮殑閮芥槸鐢ㄦ鍒欒〃杈懼紡澶勭悊闈欐佸瓧絎︿覆鐨勪緥瀛愩備笅闈㈡垜浠潵婕旂ず涓涓嬫庢牱鐢ㄦ鍒欒〃杈懼紡鎵弿鏂囦歡騫朵笖鎵懼嚭鍖歸厤鐨勫瓧絎︿覆銆傚彈Unix鐨刧rep鍚彂錛屾垜鍐欎簡涓狫Grep.java 錛屽畠闇瑕佷袱涓弬鏁幫細鏂囦歡鍚嶏紝浠ュ強鍖歸厤瀛楃涓茬敤鐨勬鍒欒〃杈懼紡銆傚畠浼氭妸鍖歸厤榪欎釜姝e垯琛ㄨ揪寮忛偅閮ㄥ垎鍐呭鍙婂叾鎵灞炶鐨勮鍙鋒墦鍗板嚭鏉ャ?/p>
//: c12:JGrep.java  // A very simple version of the "grep" program.  // {Args: JGrep.java "\\b[Ssct]\\w+"}  import  java.io.*; import  java.util.regex.*; import  java.util.*; import  com.bruceeckel.util.*; public  class  JGrep {   public  static  void  main(String[] args) throws  Exception {     if (args.length < 2) {       System.out.println("Usage: java JGrep file regex" );       System.exit(0);     }     Pattern p = Pattern.compile(args[1]);     // Iterate through the lines of the input file:      ListIterator it = new  TextFile(args[0]).listIterator();     while (it.hasNext()) {       Matcher m = p.matcher((String)it.next());       while (m.find())         System.out.println(it.nextIndex() + ": "  +           m.group() + ": "  + m.start());     }   } } ///:~ 

鏂囦歡鏄敤TextFile 鎵撳紑鐨?鏈珷鐨勫墠鍗婇儴鍒嗚鐨?銆傜敱浜嶵extFile 浼氭妸鏂囦歡鐨勫悇琛屾斁鍦ˋrrayList 閲岄潰錛岃屾垜浠張鎻愬彇浜嗕竴涓狶istIterator 錛屽洜姝ゆ垜浠彲浠ュ湪鏂囦歡鐨勫悇琛屽綋涓嚜鐢辯Щ鍔?鏃㈣兘鍚戝墠涔熷彲浠ュ悜鍚?銆?

姣忚閮戒細鏈変竴涓狹atcher 錛岀劧鍚庣敤find( ) 鎵弿銆傛敞鎰忥紝鎴戜滑鐢↙istIterator.nextIndex( ) 璺熻釜琛屽彿銆?

嫻嬭瘯鍙傛暟鏄疛Grep.java 鍜屼互[Ssct] 寮澶寸殑鍗曡瘝銆?/p>

榪橀渶瑕丼tringTokenizer鍚?

鐪嬪埌姝e垯琛ㄨ揪寮忚兘鎻愪緵榪欎箞寮哄ぇ鐨勫姛鑳斤紝浣犲彲鑳戒細鎬鐤戯紝鏄笉鏄繕闇瑕佸師鍏堢殑StringTokenizer 銆侸DK 1.4浠ュ墠錛岃鎯沖垎鍓插瓧絎︿覆錛屽彧鏈夌敤StringTokenizer 銆備絾鐜板湪錛屾湁浜嗘鍒欒〃杈懼紡涔嬪悗錛屽畠灝辮兘鍋氬緱鏇村共鍑鍒╃儲浜嗐?/p>
//: c12:ReplacingStringTokenizer.java  import  java.util.regex.*; import  com.bruceeckel.simpletest.*; import  java.util.*; public  class  ReplacingStringTokenizer {   private  static  Test monitor = new  Test();   public  static  void  main(String[] args) {     String input = "But I'm not dead yet! I feel happy!" ;     StringTokenizer stoke = new  StringTokenizer(input);     while (stoke.hasMoreElements())       System.out.println(stoke.nextToken());     System.out.println(Arrays.asList(input.split(" " )));     monitor.expect(new  String[] {       "But" ,       "I'm" ,       "not" ,       "dead" ,       "yet!" ,       "I" ,       "feel" ,       "happy!" ,       "[But, I'm, not, dead, yet!, I, feel, happy!]"      });   } } ///:~ 

鏈変簡姝e垯琛ㄨ揪寮忥紝浣犲氨鑳界敤鏇村鏉傜殑妯″紡灝嗗瓧絎︿覆鍒嗗壊寮鏉?#8212;—瑕佹槸浜ょ粰StringTokenizer 鐨勮瘽錛屼簨鎯呬細楹葷儲寰楀銆傛垜鍙互寰堟湁鎶婃彙鍦拌錛屾鍒欒〃杈懼紡鍙互鍙栦唬StringTokenizer 銆?

瑕佹兂榪涗竴姝ュ涔犳鍒欒〃杈懼紡錛屽緩璁綘鐪?cite>Mastering Regular Expression, 2nd Edition 錛屼綔鑰匤effrey E. F. Friedl (O'Reilly, 2002)銆?/p>

鎬葷粨

Java鐨処/O嫻佺被搴撳簲璇ヨ兘婊¤凍浣犵殑鍩烘湰闇姹傦細浣犲彲浠ョ敤瀹冩潵璇誨啓鎺у埗鍙幫紝鏂囦歡錛屽唴瀛橈紝鐢氳嚦鏄疘nternet銆備綘榪樺彲浠ュ埄鐢ㄧ戶鎵挎潵鍒涘緩鏂扮殑杈撳叆鍜岃緭鍑虹被鍨嬨備綘鐢氳嚦鍙互鍒╃敤Java浼氳嚜鍔ㄨ皟鐢ㄥ璞$殑toString( ) 鏂規硶鐨勭壒鐐?Java浠呮湁鐨?鑷姩綾誨瀷杞崲")錛岄氳繃閲嶆柊瀹氫箟榪欎釜鏂規硶錛屾潵瀵硅浼犵粰嫻佺殑瀵硅薄鍋氫竴涓畝鍗曠殑鎵╁睍銆?/p>

浣嗘槸Java鐨処/O嫻佺被搴撳強鍏舵枃妗h繕鏄暀涓嬩簡涓浜涚己鎲俱傛瘮鏂硅浣犳墦寮涓涓枃浠跺線閲岄潰鍐欎笢瑗匡紝浣嗘槸榪欎釜鏂囦歡宸茬粡鏈変簡錛岃繖涔堝仛浼氭妸鍘熷厛鐨勫唴瀹圭粰瑕嗙洊浜? 銆傝繖鏃惰鏄兘鏈変竴涓紓甯稿氨濂戒簡——鏈変簺緙栫▼璇█鑳借浣犺瀹氬彧鑳藉線鏂板緩鐨勬枃浠墮噷杈撳嚭銆傜湅鏉ava鏄浣犵敤File 瀵硅薄鏉ュ垽鏂枃浠舵槸鍚﹀瓨鍦紝鍥犱負濡傛灉浣犵敤FileOutputStream 鎴朏ileWriter 鐨勮瘽錛屾枃浠跺氨浼氳瑕嗙洊浜嗐?/p>

鎴戝I/O嫻佺被搴撶殑璇勪環鏄瘮杈冪煕鐩劇殑錛涘畠紜疄鑳藉共寰堝浜嬫儏錛岃屼笖鍋氬埌浜嗚法騫沖彴銆備絾鏄鏋滀綘涓嶆噦decorator妯″紡錛屽氨浼氳寰楄繖縐嶈璁″お闅劇悊瑙d簡錛屾墍浠ユ棤璁烘槸瀵硅佸笀榪樻槸瀛︾敓錛岄兘寰楀鑺辯簿鍔涖傛澶栬繖涓被搴撲篃涓嶅畬鏁達紝鍚﹀垯鎴戜篃鐢ㄤ笉鐫鍘誨啓TextFile 浜嗐傛澶栧畠娌℃湁鎻愪緵鏍煎紡鍖栬緭鍑虹殑鍔熻兘錛岃屽叾浠栬璦閮藉凡緇忔彁渚涗簡榪欑鍔熻兘銆?/p>

浣嗘槸錛屼竴鏃︿綘鐪熸鐞嗚В浜哾ecorator妯″紡錛屽茍涓旇兘寮濮嬬伒媧昏繍鐢ㄨ繖涓被搴撶殑鏃跺欙紝浣犲氨鑳芥劅鍙楀埌榪欑璁捐鐨勫ソ澶勪簡銆傝繖鏃跺鍐欏嚑琛屼唬鐮佸氨綆椾笉浜嗕粈涔堜簡銆?

濡傛灉浣犺寰椾笉瑙f復(鏈珷鍙槸鍋氫釜浠嬬粛錛屾病鎯寵闈㈤潰淇卞埌)錛屽彲浠ュ幓鐪婨lliotte Rusty Harold 鍐欑殑Java I/O (O'Reilly, 1999)銆傝繖鏈功璁插緱鏇存繁銆?/p>



abing 2012-10-09 13:29 鍙戣〃璇勮
]]>
姝e垯琛ㄨ揪寮忚В鏋? http://www.tkk7.com/abin/archive/2012/10/09/389237.htmlabingabingTue, 09 Oct 2012 05:28:00 GMThttp://www.tkk7.com/abin/archive/2012/10/09/389237.htmlhttp://www.tkk7.com/abin/comments/389237.htmlhttp://www.tkk7.com/abin/archive/2012/10/09/389237.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389237.htmlhttp://www.tkk7.com/abin/services/trackbacks/389237.html棣栧厛鎴戜滑瑕佺煡閬撴鍒欒〃杈懼紡甯歌鐨勫厓鏁版嵁錛?/span>

.鍖歸厤闄ゆ崲琛屽鎵鏈夌殑瀛楃

*鍖歸厤鏌愪釜鍏冪礌鍙互閲嶅闆舵鎴栧嬈?/span>

\b鍖歸厤鍗曡瘝鐨勫紑濮嬪拰浠嬬粛錛屼緥濡?span style="font-family: Calibri">\bhi\b錛屾爣紺哄彧鏄?span style="font-family: Calibri">hi鐨勫崟璇?/span>

\d鍖歸厤鎵鏈夋暣褰㈡暟鎹?/span>

+琛ㄧず閲嶅涓嬈℃垨澶氭

?閲嶅闆舵鎴栦竴嬈?/span>

\w鍖歸厤瀛楁瘝鎴栨暟瀛楁垨涓嬪垝綰挎垨姹夊瓧

\s鍖歸厤浠繪剰絀虹櫧瀛楃

^琛ㄧず浠ヨ瀛楃涔嬪悗鐨勫瓧絎﹀紑濮?/span>

$琛ㄧず浠ヨ瀛楃涔嬪墠鐨勭粨鏉?/span>

\W鍖歸厤浠繪剰涓嶆槸瀛楁瘝錛屾暟瀛楋紝涓嬪垝綰匡紝姹夊瓧鐨勫瓧絎?/span>

\S鍖歸厤浠繪剰涓嶆槸絀虹櫧絎︾殑瀛楃

\D鍖歸厤浠繪剰闈炴暟瀛楃殑瀛楃

\B鍖歸厤涓嶆槸鍗曡瘝寮澶存垨緇撴潫鐨勪綅緗?/span>

[^x]鍖歸厤闄や簡x浠ュ鐨勪換鎰忓瓧絎?/span>

[^aeiou]鍖歸厤闄や簡aeiou榪欏嚑涓瓧姣嶄互澶栫殑浠繪剰瀛楃

 

 

鍒嗙粍

()

(\d)?鏁板瓧閲嶅闆舵鎴栦竴嬈?/span>

閲嶅嬈℃暟闄愬畾

{5}鍙兘閲嶅5嬈?/span>

{1,5}閲嶅1鍒?span style="font-family: Calibri">5嬈?/span>

 

鎴戜滑緇撳悎Java鐨勫瓧絎︿覆鐨?span style="font-family: Calibri">String涓殑replaceAll鏉ヤ婦渚嬨?/span>

濡?span style="font-family: Calibri">:

String a= "class:test;width:50.6909;widths:50.7;height:60;biness:5;dark:0.8;";

鎴戜滑鎯寵灝?span style="font-family: Calibri">width:50;鏇挎崲涓?span style="font-family: Calibri">width:60;

String        regx = "\\s*width\\s*:\\s*(\\d+s*\\.\\s*\\d+)?\\s*;\\s*";

a = a.replaceAll(regx,"width:60;");

System.out.println(a);

瀵逛笂闈㈡鍒欒〃杈懼紡鐨勮В閲?/span>

鎵懼埌寮濮?span style="font-family: Calibri">width騫朵笖榪愯width寮濮嬫湁絀哄瓧絎︼紝涓棿鏄?span style="font-family: Calibri">:鍜屾誕鐐規暟錛屽茍涓旀誕鐐規暟鍙兘鏈変竴嬈℃垨闆舵鏈鍚庝互;緇撳熬錛屽茍涓?span style="font-family: Calibri">;鍒嗗彿鍚庨潰鍙互鏈夌┖瀛楃

         榪欐牱褰?span style="font-family: Calibri">replaceAll鏃朵細鎵懼埌婊¤凍姝e垯琛ㄨ揪寮忕殑鍐呭鐒跺悗灝嗗叾鏇挎崲涓烘兂瑕佺殑鍐呭銆?/span>



abing 2012-10-09 13:28 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲熟妇无码一区二区三区导航| 亚洲免费日韩无码系列| 91网站免费观看| 久久福利资源网站免费看| 18禁黄网站禁片免费观看不卡| 热re99久久6国产精品免费| 精品亚洲永久免费精品| 亚洲无码视频在线| 亚洲片一区二区三区| 亚洲色偷偷综合亚洲AV伊人| 中文字幕专区在线亚洲| 亚洲一区精品无码| 久久精品国产99精品国产亚洲性色| 亚洲AV无码专区国产乱码4SE| 亚洲AV日韩AV鸥美在线观看| 久久亚洲精品人成综合网| 亚洲精品免费在线视频| 日韩亚洲国产综合高清| 亚洲日韩中文字幕一区| 亚洲中久无码不卡永久在线观看| 亚洲精品天堂成人片?V在线播放| 久久久久亚洲AV成人网人人软件 | 一本久久A久久免费精品不卡| 国产A∨免费精品视频| 青柠影视在线观看免费| 99re热精品视频国产免费| 国产va精品免费观看| 日本免费一本天堂在线| 久久精品亚洲福利| 久久精品国产亚洲AV高清热| 亚洲另类春色校园小说| 国产精品亚洲综合| 亚洲AV无码成人精品区狼人影院| 免费激情网站国产高清第一页| 日本高清不卡aⅴ免费网站| 四虎1515hh永久久免费| 国产婷婷高清在线观看免费| 亚洲无线观看国产精品| 91亚洲国产成人久久精品网址| 精品久久久久久亚洲中文字幕| 中文字幕免费播放|