锘??xml version="1.0" encoding="utf-8" standalone="yes"?>四虎亚洲精品高清在线观看,亚洲视频一区二区,国产精品亚洲综合http://m.tkk7.com/junglesong/archive/2008/03/19/187367.html鍜岄緇嗛洦鍜岄緇嗛洦Wed, 19 Mar 2008 14:00:00 GMThttp://m.tkk7.com/junglesong/archive/2008/03/19/187367.htmlhttp://m.tkk7.com/junglesong/comments/187367.htmlhttp://m.tkk7.com/junglesong/archive/2008/03/19/187367.html#Feedback0http://m.tkk7.com/junglesong/comments/commentRss/187367.htmlhttp://m.tkk7.com/junglesong/services/trackbacks/187367.html鏈枃璇︾粏浠g爜璇瘋錛?br /> http://m.tkk7.com/sitinspring/archive/2008/03/14/186372.html

 

闂:灝嗗乏杈圭殑SQL璇彞瑙f瀽鎴愬彸杈圭殑褰㈠紡

Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group  by g1,g2,g3 order  by g2,g3

select
     c1,
    c2,
    c3
from
     t1,
    t2,
    t3
where
     condi1=5 and
     condi6=6 or
     condi7=7
group by
     g1,
    g2,
    g3
order by
     g2,
    g3

鎸夊叧閿瓧鎵懼嚭SQL璇彞涓悇閮ㄥ垎

鎴戜滑闃呰SQL璇彞浼氭妸鏁村彞鍒嗘潵鎴愬垪,琛?鏉′歡,鍒嗙粍瀛楁,鎺掑簭瀛楁鏉ョ悊瑙?瑙f瀽SQL鐨勭洰鐨勪篃鏄繖鏍?
鍒嗚ВSQL璇彞鏈夎寰嬪彲寰?浠ュ垪涓轟緥,瀹冨繀瀹氬寘鍚湪select鍜宖rom涔嬮棿,鎴戜滑鍙鑳芥壘鍒癝QL璇彞涓殑鍏抽敭瀛梥elect鍜宖rom,灝辮兘鎵懼埌鏌ヨ鐨勫垪.
鎬庝箞鎵懼埌select鍜宖rom涔嬮棿鐨勬枃瀛楀憿?鍏跺疄涓涓鍒欒〃杈懼紡灝辮兘瑙e喅:(select)(.+)(from),鍏朵腑絎簩緇?.+)浠h〃鐨勬枃瀛楀氨鏄痵elect鍜宖rom涔嬮棿鐨勬枃瀛?
紼嬪簭瑙佸彸杈?

/**
 * 浠庢枃鏈瑃ext涓壘鍒皉egex棣栨鍖歸厤鐨勫瓧絎︿覆錛屼笉鍖哄垎澶у皬鍐?br />  * @param regex錛?姝e垯琛ㄨ揪寮?br />  * @param text錛氭鏌ユ壘鐨勫瓧絎︿覆
 * @return regex棣栨鍖歸厤鐨勫瓧絎︿覆錛屽鏈尮閰嶈繑鍥炵┖
 */
private static String getMatchedString(String regex,String text){
  Pattern pattern=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
   
    Matcher matcher=pattern.matcher(text);

    while(matcher.find()){
      return matcher.group(2);
    }
   
    return null;
}

瑙f瀽鍑芥暟鍒嗘瀽

private static String getMatchedString(String regex,String text){
  Pattern pattern=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
   
    Matcher matcher=pattern.matcher(text);

    while(matcher.find()){
      return matcher.group(2);
    }
   
    return null;
}

宸﹁竟鐨勮繖涓嚱鏁?絎竴涓弬鏁版槸鎷熷畾鐨勬鍒欒〃杈懼紡,絎簩涓槸鏁翠釜SQL璇彞.
褰撴鍒欒〃杈懼紡涓?select)(.+)(from)鏃?紼嬪簭灝嗗湪SQL涓煡鎵劇涓嬈″尮閰嶇殑鍦版柟(鏈塒attern.CASE_INSENSITIVE鐨勮緗?鏌ユ壘涓嶅尯鍒嗗ぇ灝忓啓),濡傛灉鎵懼埌浜嗗垯榪斿洖妯″紡涓殑絎簩緇勪唬琛ㄧ殑鏂囧瓧.
濡傛灉sql鏄痵elect a,b from tc,鍒欒繑鍥炵殑鏂囧瓧鏄痑,b.

閫夋嫨鐨勮〃瀵瑰簲鐨勬煡鎵炬鍒欒〃杈懼紡

閫夋嫨鐨勮〃姣旇緝鐗規畩,瀹冧笉鎯抽夋嫨鐨勫垪涓鏍峰浐瀹氬浜巗elect鍜宖rom涔嬮棿,褰撴病鏈夋煡鎵炬潯浠跺瓨鍦ㄦ椂,瀹冨浜巉rom鍜岀粨鏉熶箣闂?褰撴湁鏌ユ壘鏉′歡瀛樺湪鏃?瀹冨浜巉rom鍜寃here涔嬮棿.
鍥犳鏌ヨ鍑芥暟鍐欎負鍙寵竟鐨勫艦寮?

/**
 * 瑙f瀽閫夋嫨鐨勮〃
 *
 */
private void parseTables(){
    String regex="";  
   
    if(isContains(sql,"\\s+where\\s+")){
      regex="(from)(.+)(where)";  
    }
    else{
      regex="(from)(.+)($)";  
    }
   
    tables=getMatchedString(regex,sql);
}


isContains鍑芥暟

isContains鍑芥暟鐢ㄤ簬鍦╨ineText涓煡鎵緒ord,鍏朵腑涓嶅尯鍒嗗ぇ灝忎簺,鍙鎵懼埌浜嗗嵆榪斿洖鐪?

/**
 * 鐪媤ord鏄惁鍦╨ineText涓瓨鍦紝鏀寔姝e垯琛ㄨ揪寮?br />  * @param lineText
 * @param word
 * @return
 */
private static boolean isContains(String lineText,String word){
  Pattern pattern=Pattern.compile(word,Pattern.CASE_INSENSITIVE);
  Matcher matcher=pattern.matcher(lineText);
  return matcher.find();
}

瑙f瀽鏌ユ壘鏉′歡鐨勫嚱鏁?/strong>

private void parseConditions(){
    String regex="";  
   
    if(isContains(sql,"\\s+where\\s+")){
      // 鍖呮嫭Where錛屾湁鏉′歡
     
      if(isContains(sql,"group\\s+by")){
        // 鏉′歡鍦╳here鍜実roup by涔嬮棿
        regex="(where)(.+)(group\\s+by)"; 
      }
      else if(isContains(sql,"order\\s+by")){
        // 鏉′歡鍦╳here鍜宱rder by涔嬮棿
        regex="(where)(.+)(order\\s+by)"; 
      }
      else{
        // 鏉′歡鍦╳here鍒板瓧絎︿覆鏈熬
        regex="(where)(.+)($)"; 
      }       
    }
    else{
      // 涓嶅寘鎷瑆here鍒欐潯浠舵棤浠庤皥璧鳳紝榪斿洖鍗沖彲
      return;
    }
   
    conditions=getMatchedString(regex,sql);
}

瑙f瀽GroupBy鐨勫瓧孌?/strong>

private void parseGroupCols(){
    String regex="";  
   
    if(isContains(sql,"group\\s+by")){
      // 鍖呮嫭GroupBy錛屾湁鍒嗙粍瀛楁

      if(isContains(sql,"order\\s+by")){
        // group by 鍚庢湁order by
        regex="(group\\s+by)(.+)(order\\s+by)"; 
      }
      else{
        // group by 鍚庢棤order by
        regex="(group\\s+by)(.+)($)"; 
      }     
    }
    else{
      // 涓嶅寘鎷珿roupBy鍒欏垎緇勫瓧孌墊棤浠庤皥璧鳳紝榪斿洖鍗沖彲
      return;
    }
   
    groupCols=getMatchedString(regex,sql);
}


瑙f瀽OrderBy鐨勫瓧孌?/strong>

private void parseOrderCols(){
    String regex="";  
   
    if(isContains(sql,"order\\s+by")){
      // 鍖呮嫭order by錛屾湁鍒嗙粍瀛楁
      regex="(order\\s+by)(.+)($)";                 
    }
    else{
      // 涓嶅寘鎷珿roupBy鍒欏垎緇勫瓧孌墊棤浠庤皥璧鳳紝榪斿洖鍗沖彲
      return;
    }
     
    orderCols=getMatchedString(regex,sql);
}

寰楀埌瑙f瀽鍚庣殑鍚勯儴鍒?/strong>

鎸変互涓婅В鏋愭柟娉曡幏寰椾簡鍒?琛?鏉′歡,鍒嗙粍鏉′歡,鎺掑簭鏉′歡鍚勯儴鍒嗕箣鍚?瀹冧滑浼氬瓨鍌ㄥ埌鍚勪釜鎴愬憳鍙橀噺涓?
娉ㄦ剰榪欎簺鎴愬憳鍙橀噺鐨勫師鍊奸兘鏄痭ull,濡傛灉鍦⊿QL璇彞涓兘澶熸壘鍒板搴旂殑閮ㄥ垎鐨勮瘽瀹冧滑灝嗗熷姪getMatchedString鑾峰緱鍊?鍚﹀垯榪樻槸null.鎴戜滑閫氳繃鍒ゆ柇榪欎簺鎴愬憳鍙橀噺鏄惁涓虹┖灝辮兘鐭ラ亾瀹冨搴旂殑閮ㄥ垎鏄惁琚В鏋愬嚭鏉?

 /**
   * 寰呰В鏋愮殑SQL璇彞
   */
  private String sql;
 
  /**
   * SQL涓夋嫨鐨勫垪
   */
  private String cols;
 
  /**
   * SQL涓煡鎵劇殑琛?br />    */
  private String tables;
 
  /**
   * 鏌ユ壘鏉′歡
   */
  private String conditions;
 
  /**
   * Group By鐨勫瓧孌?br />    */
  private String groupCols;
 
  /**
   * Order by鐨勫瓧孌?br />    */
  private String orderCols;

鍙栧緱涓嶉渶瑕佸崟琛屾樉紺烘椂鐨凷QL璇彞

榪涘睍鍒拌繖涓姝?SQL璇彞涓垪,琛?鏉′歡,鍒嗙粍鏉′歡,鎺掑簭鏉′歡鍚勯儴鍒嗛兘琚幏鍙栦簡鍑烘潵,榪欐椂鎶婂畠浠噸鏂扮粍鍚堜竴涓嬪氨鑳藉緱鍒版暣鐞嗗悗鐨凷QL璇彞.
濡備笅闈㈢殑SQL璇彞灝嗗彉鎴愬彸杈圭殑閮ㄥ垎(鍏堜嬌闈欐佹垚鍛榠sSingleLine=false):
Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group  by g1,g2,g3 order  by g2,g3

select
     c1,c2,c3
from
     t1,t2,t3
where
     condi1=5 and condi6=6 or condi7=7
group by
     g1,g2,g3
order by
     g2,g3


榪涗竴姝ヨВ鏋?/strong>

鏈夋椂鎴戜滑闇瑕佹妸鍒?琛?鏉′歡,鍒嗙粍鏉′歡,鎺掑簭鏉′歡鍗曡鏄劇ず浠ユ柟渚挎煡鐪嬫垨鍔犱笂娉ㄩ噴,榪欏氨瑕佹眰鎴戜滑瀵瑰垪,琛?鏉′歡,鍒嗙粍鏉′歡,鎺掑簭鏉′歡絳夎繘琛岃繘涓姝ヨВ鏋?
鍒濈湅瑙f瀽寰堟柟渚?浠ュ浐瀹氱殑鍒嗛殧絎﹀妶鍒嗗嵆鍙?浣嗛渶瑕佹敞鎰忕殑鏄煡璇㈡潯浠朵腑鍒嗛殧絎︽湁and鍜宱r涓ょ,濡傛灉璐哥劧鍒嗛殧浼氫嬌閲嶆柊緇勫悎鏃朵嬌SQL澶辯湡.
鎺ㄨ崘涓縐嶅仛娉?鎴戜滑鍙互鍦ㄥ垎闅旂鍚庡姞涓婁竴涓爣蹇楀絀鴻,鐒跺悗鍐嶄互榪欎釜鏍囧織鏉ュ妶鍒?榪欐牱灝變笉浼氫嬌SQL澶辯湡浜?
璇瘋涓嬮〉鐨刧etSplitedParagraph鍑芥暟.

getSplitedParagraph鍑芥暟

private static List<String> getSplitedParagraph(String paragraph,String splitStr){
  List<String> ls=new ArrayList<String>();   
 
  // 鍏堝湪鍒嗛殧絎﹀悗鍔犵┖鏍?br />   Pattern p = Pattern.compile(splitStr,Pattern.CASE_INSENSITIVE);

  Matcher m = p.matcher(paragraph);
  StringBuffer sb = new StringBuffer();

  boolean result = m.find();
  while (result) {
    m.appendReplacement(sb, m.group(0) + Crlf);
    result = m.find();
  }
  m.appendTail(sb);
 
  // 鍐嶆寜絀烘牸鏂
  String[] arr=sb.toString().split("[\n]+");
  for(String temp:arr){
    ls.add(FourSpace+temp+Crlf);
  }
 
  return ls;
}

澶勭悊緇撴灉

鎶婇潤鎬佹垚鍛樺彉閲廼sSingleLine=true鍚庢垜浠潵鐪嬬湅鎵ц緇撴灉:
select
     c1,
    c2,
    c3
from
     t1,
    t2,
    t3
where
     condi1=5 and
     condi6=6 or
     condi7=7
group by
     g1,
    g2,
    g3
order by
     g2,
    g3

灝忕粨

浠庤繖涓緥瀛愪腑鎴戜滑浣撲細浜嗗垎娌葷殑鎬濇兂:鍒嗘不鏄妸涓涓ぇ闂鍒嗚В鎴愬皬闂,鐒跺悗鍒嗗埆瑙e喅灝忛棶棰?鍐嶇粍鍚堣搗鏉ュぇ闂鐨勮В鍐蟲柟娉曞氨宸笉澶氫簡.榪欑鎬濇兂鍦ㄥ伐紼嬮鍩熻В鍐抽棶棰樻椂寰堟櫘閬?鎴戜滑瑕佸浼氫嬌鐢ㄨ繖縐嶆濇兂鏉ョ湅寰?鍒嗘瀽鍜岃В鍐抽棶棰?涓嶈璐姹傚ぇ,緇撴灉瀵艱嚧鍦ㄥぇ闂闈㈠墠涓絳硅帿灞?
鍏舵鎴戜滑鍙互浠庤繖涓緥瀛愪腑瀛︿範鎵捐寰?鐒跺悗鍊熷姪瑙勫緥鐨勮繃紼?鐜板疄涓栫晫鍗冨彉涓囧寲,浣嗛兘鏈夎寰嬪彲寰?鍙鎴戜滑鎵懼埌浜嗚寰?灝辯瓑浜庢壘鍒頒簡浜嬬墿涔嬮棬鐨勯挜鍖?
鎺ヤ笅浜嗘垜浠涔犱簡姝e垯琛ㄨ揪寮忕敤浜庢煡鎵劇殑鏂規硶,浠ュ墠鐨勬鍒欒〃杈懼紡瀛︿範澶氱敤浜庨獙璇佸尮閰?鍏跺疄榪欏彧鏄鍒欒〃杈懼紡鐨勪竴閮ㄥ垎鍔熻兘.
鏈鍚庝粠瑙f瀽鏉′歡鎴愬崟琛岀殑榪囩▼涓?鎴戜滑鍙互瀛︿範鍒頒竴縐嶈В鍐抽棶棰樼殑鎶宸?鍗沖綋鐜板疄涓殑瑙勫緥瀛樺湪鍙樻暟鏃跺姞鍏ヤ漢涓鴻緗殑瑙勫緥,榪欐湁鏃惰兘浣挎垜浠洿濂芥洿蹇殑瑙e喅闂.



]]>
姝e垯琛ㄨ揪寮忚繘闃?/title><link>http://m.tkk7.com/junglesong/archive/2008/02/21/181194.html</link><dc:creator>鍜岄緇嗛洦</dc:creator><author>鍜岄緇嗛洦</author><pubDate>Thu, 21 Feb 2008 12:20:00 GMT</pubDate><guid>http://m.tkk7.com/junglesong/archive/2008/02/21/181194.html</guid><wfw:comment>http://m.tkk7.com/junglesong/comments/181194.html</wfw:comment><comments>http://m.tkk7.com/junglesong/archive/2008/02/21/181194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/junglesong/comments/commentRss/181194.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/junglesong/services/trackbacks/181194.html</trackback:ping><description><![CDATA[<p><strong>閫氶厤絎</strong></p> <p>^琛ㄧず妯″紡鐨勫紑濮?濡俕he鍖歸厤鎵鏈変互he寮澶寸殑瀛楃涓?<br /> 渚嬬▼:<br />  String[] dataArr = { "he", "hero", "here", "hitler"};</p> <p>    for (String str : dataArr) {<br />       String patternStr = "(^he)(\\w*)";</p> <p>      boolean result = Pattern.matches(patternStr, str);<br />       if (result) {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "鎴愬姛");<br />       } else {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "澶辮觸");<br />       }<br />     }</p> <p><strong>閫氶厤絎?</strong></p> <p>$琛ㄧず妯″紡鐨勭粨鏉?濡俰a$鍖歸厤鎵鏈変互ia緇撳熬鐨勫崟璇?<br />  String[] dataArr = { "ia", "Asia", "China", "Colonbia","America"};</p> <p>    for (String str : dataArr) {<br />       String patternStr = "(\\w*)(ia$)";</p> <p>      boolean result = Pattern.matches(patternStr, str);<br />       if (result) {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "鎴愬姛");<br />       } else {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "澶辮觸");<br />       }<br />     }</p> <p><strong>閫氶厤絎}</strong></p> <p>闄や簡鐢?琛ㄧず涓嬈℃垨澶氭,*琛ㄧず0嬈℃垨澶氭,?琛ㄧず0嬈℃垨涓嬈″,榪樺彲浠ョ敤{}鏉ユ寚瀹氱簿紜寚瀹氬嚭鐜扮殑嬈℃暟,X{2,5}琛ㄧずX鏈灝戝嚭鐜?嬈?鏈澶氬嚭鐜?嬈?X{2,}琛ㄧずX鏈灝戝嚭鐜?嬈?澶氬垯涓嶉檺;X{5}琛ㄧずX鍙簿紜殑鍑虹幇5嬈?<br /> 渚嬬▼:<br /> String[] dataArr = { "google", "gooogle", "gooooogle", "goooooogle","ggle"};</p> <p>for (String str : dataArr) {<br />  String patternStr = "g(o{2,5})gle";</p> <p> boolean result = Pattern.matches(patternStr, str);<br />  if (result) {<br />   System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "鎴愬姛");<br />  } else {<br />   System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "澶辮觸");<br />  }<br /> }</p> <p><strong>閫氶厤絎]涓殑-</strong></p> <p>-琛ㄧず浠?.鍒?#8230;,濡俒a-e]絳夊悓浜嶽abcde]<br />  String[] dataArr = { "Tan", "Tbn", "Tcn", "Ton","Twn"};</p> <p>    for (String str : dataArr) {<br />       String regex = "T[a-c]n";</p> <p>      boolean result = Pattern.matches(regex, str);<br />       if (result) {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + regex + "鎴愬姛");<br />       } else {<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + regex + "澶辮觸");<br />       }<br />     }</p> <p><strong>Pattern綾葷殑鏂規硶綆榪?br /> <table style="width: 729px; height: 271px" cellspacing="2" cellpadding="2" width="729" border="0"> <tbody> <tr> <td>鏂規硶</td> <td>璇存槑</td> </tr> <tr> <td>static Pettern compile(String regex,int flag)</td> <td>緙栬瘧妯″紡,鍙傛暟regex琛ㄧず杈撳叆鐨勬鍒欒〃杈懼紡,flag琛ㄧず妯″紡綾誨瀷(Pattern.CASE_INSENSITIVE 琛ㄧず涓嶅尯鍒嗗ぇ灝忓啓)</td> </tr> <tr> <td>Matcher match(CharSequence input)</td> <td>鑾峰彇鍖歸厤鍣?input鏃惰緭鍏ョ殑寰呭鐞嗙殑瀛楃涓?/td> </tr> <tr> <td>static boolean matches(String regex, CharSequence input)</td> <td>蹇熺殑鍖歸厤璋冪敤,鐩存帴鏍規嵁杈撳叆鐨勬ā寮弐egex鍖歸厤input</td> </tr> <tr> <td>String[] split(CharSequence input,int limit)</td> <td>鍒嗛殧瀛楃涓瞚nput,limit鍙傛暟鍙互闄愬埗鍒嗛殧鐨勬鏁?/td> </tr> </tbody> </table> <br /> </strong></p> <p><strong>妯″紡綾誨瀷Pattern.CASE_INSENSITIVE</strong></p> <p>姝e垯琛ㄨ揪寮忛粯璁ら兘鏄尯鍒嗗ぇ灝忓啓鐨?浣跨敤浜哖attern.CASE_INSENSITIVE鍒欎笉瀵瑰ぇ灝忓啓榪涜鍖哄垎.</p> <p> String patternStr="ab";<br />     Pattern pattern=Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);<br />     <br />     String[] dataArr = { "ab", "Ab", "AB"};<br />     <br />     for (String str : dataArr) {<br />       Matcher matcher=pattern.matcher(str);<br />       <br />       if(matcher.find()){<br />         System.out.println("瀛楃涓? + str + "鍖歸厤妯″紡" + patternStr + "鎴愬姛");<br />       }<br />     }</p> <p><strong>Pattern鐨剆plit鏂規硶紺轟緥</strong></p> <p> 娉ㄦ剰榪欓噷瑕佹妸澶嶆潅鐨勬ā寮忓啓鍦ㄥ墠闈?鍚﹀垯綆鍗曟ā寮忎細鍏堝尮閰嶄笂.</p> <p>String input="鑱屽姟=GM 钖按=50000 , 濮撳悕=鑱屼笟緇忕悊浜?; 鎬у埆=鐢?nbsp; 騫撮緞=45 ";<br />     String patternStr="(\\s*,\\s*)|(\\s*;\\s*)|(\\s+)";<br />     Pattern pattern=Pattern.compile(patternStr);<br />     <br />     String[] dataArr=pattern.split(input);<br />     <br />     for (String str : dataArr) {<br />       System.out.println(str);<br />     }</p> <p><strong>Matcher綾葷殑鏂規硶綆榪?br /> <table style="width: 758px; height: 356px" cellspacing="2" cellpadding="2" width="758" border="0"> <tbody> <tr> <td>鏂規硶</td> <td>璇存槑</td> </tr> <tr> <td>boolean matches()</td> <td>瀵規暣涓緭鍏ュ瓧絎︿覆榪涜妯″紡鍖歸厤.</td> </tr> <tr> <td>boolean lookingAt()</td> <td>浠庤緭鍏ュ瓧絎︿覆鐨勫紑濮嬪榪涜妯″紡鍖歸厤</td> </tr> <tr> <td>boolean find(int start)</td> <td>浠巗tart澶勫紑濮嬪尮閰嶆ā寮?/td> </tr> <tr> <td>int groupCount()</td> <td>榪斿洖鍖歸厤鍚庣殑鍒嗙粍鏁扮洰</td> </tr> <tr> <td>String replaceAll(String replacement)</td> <td>鐢ㄧ粰瀹氱殑replacement鍏ㄩ儴鏇夸唬鍖歸厤鐨勯儴鍒?/td> </tr> <tr> <td>String repalceFirst(String replacement)</td> <td>鐢ㄧ粰瀹氱殑replacement鏇夸唬絎竴嬈″尮閰嶇殑閮ㄥ垎</td> </tr> <tr> <td>Matcher appendReplacement(StringBuffer sb,String replacement)</td> <td>鏍規嵁妯″紡鐢╮eplacement鏇挎崲鐩稿簲鍐呭,騫跺皢鍖歸厤鐨勭粨鏋滄坊鍔犲埌sb褰撳墠浣嶇疆涔嬪悗</td> </tr> <tr> <td>StringBuffer appendTail(StringBuffer sb)</td> <td>灝嗚緭鍏ュ簭鍒椾腑鍖歸厤涔嬪悗鐨勬湯灝懼瓧涓叉坊鍔犲埌sb褰撳墠浣嶇疆涔嬪悗.</td> </tr> </tbody> </table> <br /> </strong></p> <p><strong>鍖歸厤紺轟緥涓:XML鍏冪礌鏂囧瓧瑙f瀽</strong></p> <p>String regex="<(\\w+)>(\\w+)</\\1>";<br /> Pattern pattern=Pattern.compile(regex);<br />     <br /> String input="<name>Bill</name><salary>50000</salary><title>GM</title>";<br />     <br /> Matcher matcher=pattern.matcher(input);<br />     <br /> while(matcher.find()){<br />       System.out.println(matcher.group(2));<br /> }</p> <p><strong>鏇挎崲瀹炰緥涓:灝嗗崟璇嶅拰鏁板瓧閮ㄥ垎鐨勫崟璇嶆崲鎴愬ぇ鍐?/strong></p> <p>    String regex="([a-zA-Z]+[0-9]+)";   <br />     Pattern pattern=Pattern.compile(regex);<br />     <br />     String input="age45 salary500000 50000 title";<br />     <br />     Matcher matcher=pattern.matcher(input);<br />     <br />     StringBuffer sb=new StringBuffer();<br />     <br />     while(matcher.find()){<br />       String replacement=matcher.group(1).toUpperCase();<br />       matcher.appendReplacement(sb, replacement);<br />     }<br />     matcher.appendTail(sb);<br />     <br />     System.out.println("鏇挎崲瀹岀殑瀛椾覆涓?+sb.toString());</p> <p> </p> <img src ="http://m.tkk7.com/junglesong/aggbug/181194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/junglesong/" target="_blank">鍜岄緇嗛洦</a> 2008-02-21 20:20 <a href="http://m.tkk7.com/junglesong/archive/2008/02/21/181194.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>姝e垯琛ㄨ揪寮忔榪頒竴http://m.tkk7.com/junglesong/archive/2008/02/21/181193.html鍜岄緇嗛洦鍜岄緇嗛洦Thu, 21 Feb 2008 12:16:00 GMThttp://m.tkk7.com/junglesong/archive/2008/02/21/181193.htmlhttp://m.tkk7.com/junglesong/comments/181193.htmlhttp://m.tkk7.com/junglesong/archive/2008/02/21/181193.html#Feedback0http://m.tkk7.com/junglesong/comments/commentRss/181193.htmlhttp://m.tkk7.com/junglesong/services/trackbacks/181193.html瀛楃涓插鐞嗘槸璁稿紼嬪簭涓潪甯擱噸瑕佺殑涓閮ㄥ垎,瀹冧滑鍙互鐢ㄤ簬鏂囨湰鏄劇ず,鏁版嵁琛ㄧず,鏌ユ壘閿拰寰堝鐩殑.鍦║nix涓?鐢ㄦ埛鍙互浣跨敤姝e垯琛ㄨ揪寮忕殑寮哄仴鍔熻兘瀹炵幇榪欎簺鐩殑,浠嶫ava1.4璧?Java鏍稿績API灝卞紩鍏ヤ簡java.util.regex紼嬪簭鍖?瀹冩槸涓縐嶆湁浠峰肩殑鍩虹宸ュ叿,鍙互鐢ㄤ簬寰堝綾誨瀷鐨勬枃鏈鐞?濡傚尮閰?鎼滅儲,鎻愬彇鍜屽垎鏋愮粨鏋勫寲鍐呭.

java.util.regex浠嬬粛

java.util.regex鏄竴涓敤姝e垯琛ㄨ揪寮忔墍璁㈠埗鐨勬ā寮忔潵瀵瑰瓧絎︿覆榪涜鍖歸厤宸ヤ綔鐨勭被搴撳寘銆傚畠鍖呮嫭涓や釜綾伙細Pattern鍜孧atcher Pattern .
Pattern鏄竴涓鍒欒〃杈懼紡緇忕紪璇戝悗鐨勮〃鐜版ā寮忋?nbsp;
Matcher 涓涓狹atcher瀵硅薄鏄竴涓姸鎬佹満鍣紝瀹冧緷鎹甈attern瀵硅薄鍋氫負鍖歸厤妯″紡瀵瑰瓧絎︿覆灞曞紑鍖歸厤媯鏌ャ傞鍏堜竴涓狿attern瀹炰緥璁㈠埗浜嗕竴涓墍鐢ㄨ娉曚笌PERL鐨勭被浼肩殑姝e垯琛ㄨ揪寮忕粡緙栬瘧鍚庣殑妯″紡錛岀劧鍚庝竴涓狹atcher瀹炰緥鍦ㄨ繖涓粰瀹氱殑Pattern瀹炰緥鐨勬ā寮忔帶鍒朵笅榪涜瀛楃涓茬殑鍖歸厤宸ヤ綔銆?/p>

Pattern綾?/strong>

鍦╦ava涓?閫氳繃閫傚綋鍛藉悕鐨凱attern綾誨彲浠ュ鏄撶‘瀹歋tring鏄惁鍖歸厤鏌愮妯″紡.妯″紡鍙互璞″尮閰嶆煇涓壒瀹氱殑String閭f牱綆鍗?涔熷彲浠ュ緢澶嶆潅,闇瑕侀噰鐢ㄥ垎緇勫拰瀛楃綾?濡傜┖鐧?鏁板瓧,瀛楁瘝鎴栨帶鍒剁.鍥犱負Java瀛楃涓插熀浜庣粺涓瀛楃緙栫爜(Unicode),姝e垯琛ㄨ揪寮忎篃閫傜敤浜庡浗闄呭寲鐨勫簲鐢ㄧ▼搴?

Pattern鐨勬柟娉?/strong>

Pattern鐨勬柟娉曞涓嬶細 static Pattern compile(String regex)
灝嗙粰瀹氱殑姝e垯琛ㄨ揪寮忕紪璇戝茍璧嬩簣緇橮attern綾?nbsp;
static Pattern compile(String regex, int flags)
鍚屼笂錛屼絾澧炲姞flag鍙傛暟鐨勬寚瀹氾紝鍙夌殑flag鍙傛暟鍖呮嫭錛欳ASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE錛?CANON EQ 
int flags()
榪斿洖褰撳墠Pattern鐨勫尮閰峟lag鍙傛暟. 
Matcher matcher(CharSequence input)
鐢熸垚涓涓粰瀹氬懡鍚嶇殑Matcher瀵硅薄 
static boolean matches(String regex, CharSequence input)
緙栬瘧緇欏畾鐨勬鍒欒〃杈懼紡騫朵笖瀵硅緭鍏ョ殑瀛椾覆浠ヨ姝e垯琛ㄨ揪寮忎負妯″紑灞曞尮閰?璇ユ柟娉曢傚悎浜庤姝e垯琛ㄨ揪寮忓彧浼氫嬌鐢ㄤ竴嬈$殑鎯呭喌錛屼篃灝辨槸鍙繘琛屼竴嬈″尮閰嶅伐浣滐紝鍥犱負榪欑鎯呭喌涓嬪茍涓嶉渶瑕佺敓鎴愪竴涓狹atcher瀹炰緥銆?nbsp; 
String pattern()
榪斿洖璇atter瀵硅薄鎵緙栬瘧鐨勬鍒欒〃杈懼紡銆?nbsp;
String[] split(CharSequence input)
灝嗙洰鏍囧瓧絎︿覆鎸夌収Pattern閲屾墍鍖呭惈鐨勬鍒欒〃杈懼紡涓烘ā榪涜鍒嗗壊銆?nbsp;
String[] split(CharSequence input, int limit)
浣滅敤鍚屼笂錛屽鍔犲弬鏁發imit鐩殑鍦ㄤ簬瑕佹寚瀹氬垎鍓茬殑孌墊暟錛屽灝唋imi璁句負2錛岄偅涔堢洰鏍囧瓧絎︿覆灝嗘牴鎹鍒欒〃杈懼紡鍒嗕負鍓蹭負涓ゆ銆?nbsp;


涓涓鍒欒〃杈懼紡錛屼篃灝辨槸涓涓叉湁鐗瑰畾鎰忎箟鐨勫瓧絎︼紝蹇呴』棣栧厛瑕佺紪璇戞垚涓轟竴涓狿attern綾葷殑瀹炰緥錛岃繖涓狿attern瀵硅薄灝嗕細浣跨敤matcher()鏂規硶鏉ョ敓鎴愪竴涓狹atcher瀹炰緥錛屾帴鐫渚垮彲浠ヤ嬌鐢ㄨ Matcher瀹炰緥浠ョ紪璇戠殑姝e垯琛ㄨ揪寮忎負鍩虹瀵圭洰鏍囧瓧絎︿覆榪涜鍖歸厤宸ヤ綔錛屽涓狹atcher鏄彲浠ュ叡鐢ㄤ竴涓狿attern瀵硅薄鐨勩?

Matcher鐨勬柟娉?/strong>

Matcher appendReplacement(StringBuffer sb, String replacement)
灝嗗綋鍓嶅尮閰嶅瓙涓叉浛鎹負鎸囧畾瀛楃涓詫紝騫朵笖灝嗘浛鎹㈠悗鐨勫瓙涓蹭互鍙婂叾涔嬪墠鍒頒笂嬈″尮閰嶅瓙涓蹭箣鍚庣殑瀛楃涓叉娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲屻?
StringBuffer appendTail(StringBuffer sb)
灝嗘渶鍚庝竴嬈″尮閰嶅伐浣滃悗鍓╀綑鐨勫瓧絎︿覆娣誨姞鍒頒竴涓猄tringBuffer瀵硅薄閲屻?
int end()
榪斿洖褰撳墠鍖歸厤鐨勫瓙涓茬殑鏈鍚庝竴涓瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑绱㈠紩浣嶇疆 銆?
int end(int group)
榪斿洖涓庡尮閰嶆ā寮忛噷鎸囧畾鐨勭粍鐩稿尮閰嶇殑瀛愪覆鏈鍚庝竴涓瓧絎︾殑浣嶇疆銆?
boolean find()
灝濊瘯鍦ㄧ洰鏍囧瓧絎︿覆閲屾煡鎵句笅涓涓尮閰嶅瓙涓層?
boolean find(int start)
閲嶈Matcher瀵硅薄錛屽茍涓斿皾璇曞湪鐩爣瀛楃涓查噷浠庢寚瀹氱殑浣嶇疆寮濮嬫煡鎵句笅涓涓尮閰嶇殑瀛愪覆銆?
String group()
榪斿洖褰撳墠鏌ユ壘鑰岃幏寰楃殑涓庣粍鍖歸厤鐨勬墍鏈夊瓙涓插唴瀹?
String group(int group)
榪斿洖褰撳墠鏌ユ壘鑰岃幏寰楃殑涓庢寚瀹氱殑緇勫尮閰嶇殑瀛愪覆鍐呭
int groupCount()
榪斿洖褰撳墠鏌ユ壘鎵鑾峰緱鐨勫尮閰嶇粍鐨勬暟閲忋?
boolean lookingAt()
媯嫻嬬洰鏍囧瓧絎︿覆鏄惁浠ュ尮閰嶇殑瀛愪覆璧峰銆?
boolean matches()
灝濊瘯瀵規暣涓洰鏍囧瓧絎﹀睍寮鍖歸厤媯嫻嬶紝涔熷氨鏄彧鏈夋暣涓洰鏍囧瓧絎︿覆瀹屽叏鍖歸厤鏃舵墠榪斿洖鐪熷箋?
Pattern pattern()
榪斿洖璇atcher瀵硅薄鐨勭幇鏈夊尮閰嶆ā寮忥紝涔熷氨鏄搴旂殑Pattern 瀵硅薄銆?
String replaceAll(String replacement)
灝嗙洰鏍囧瓧絎︿覆閲屼笌鏃㈡湁妯″紡鐩稿尮閰嶇殑瀛愪覆鍏ㄩ儴鏇挎崲涓烘寚瀹氱殑瀛楃涓層?
String replaceFirst(String replacement)
灝嗙洰鏍囧瓧絎︿覆閲岀涓涓笌鏃㈡湁妯″紡鐩稿尮閰嶇殑瀛愪覆鏇挎崲涓烘寚瀹氱殑瀛楃涓層?
Matcher reset()
閲嶈璇atcher瀵硅薄銆?
Matcher reset(CharSequence input)
閲嶈璇atcher瀵硅薄騫朵笖鎸囧畾涓涓柊鐨勭洰鏍囧瓧絎︿覆銆?
int start()
榪斿洖褰撳墠鏌ユ壘鎵鑾峰瓙涓茬殑寮濮嬪瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑浣嶇疆銆?
int start(int group)
榪斿洖褰撳墠鏌ユ壘鎵鑾峰緱鐨勫拰鎸囧畾緇勫尮閰嶇殑瀛愪覆鐨勭涓涓瓧絎﹀湪鍘熺洰鏍囧瓧絎︿覆涓殑浣嶇疆銆?

涓涓狹atcher瀹炰緥鏄鐢ㄦ潵瀵圭洰鏍囧瓧絎︿覆榪涜鍩轟簬鏃㈡湁妯″紡錛堜篃灝辨槸涓涓粰瀹氱殑Pattern鎵緙栬瘧鐨勬鍒欒〃杈懼紡錛夎繘琛屽尮閰嶆煡鎵劇殑錛屾墍鏈夊線 Matcher鐨勮緭鍏ラ兘鏄氳繃CharSequence鎺ュ彛鎻愪緵鐨勶紝榪欐牱鍋氱殑鐩殑鍦ㄤ簬鍙互鏀寔瀵逛粠澶氬厓鍖栫殑鏁版嵁婧愭墍鎻愪緵鐨勬暟鎹繘琛屽尮閰嶅伐浣溿?/p>

浣跨敤Pattern綾繪楠屽瓧絎﹀尮閰?/strong>

姝e垯寮忔槸鏈綆鍗曠殑鑳藉噯紜尮閰嶄竴涓粰瀹歋tring鐨勬ā寮?妯″紡涓庤鍖歸厤鐨勬枃鏈槸絳変環鐨?闈欐佺殑Pattern.matches鏂規硶鐢ㄤ簬姣旇緝涓涓猄tring鏄惁鍖歸厤涓涓粰瀹氭ā寮?渚嬬▼濡備笅:
String data="java";
boolean result=Pattern.matches("java",data);

瀛楃綾誨拰琛ㄧず嬈℃暟鐨勭壒孌婂瓧絎?/p>

瀵逛簬鍗曞瓧絎︿覆姣旇緝鑰岃█,浣跨敤姝e垯琛ㄨ揪寮忔病鏈変粈涔堜紭鍔?Regex鐨勭湡姝e己澶т箣澶勫湪浜庝綋鐜板湪鍖呮嫭瀛楃綾誨拰閲忚瘝(*,+,?)鐨勬洿澶嶆潅鐨勬ā寮忎笂.
瀛楃綾誨寘鎷?
\d  鏁板瓧
\D  闈炴暟瀛?br /> \w  鍗曞瓧瀛楃(0-9,A-Z,a-z)
\W 闈炲崟瀛楀瓧絎?br /> \s  絀虹櫧(絀烘牸絎?鎹㈣絎?鍥炶濺絎?鍒惰〃絎?
\S 闈炵┖鐧?br /> []  鐢辨柟鎷彿鍐呯殑涓涓瓧絎﹀垪琛ㄥ垱寤虹殑鑷畾涔夊瓧絎︾被
.   鍖歸厤浠諱綍鍗曚釜瀛楃
涓嬮潰鐨勫瓧絎﹀皢鐢ㄤ簬鎺у埗灝嗕竴涓瓙妯″紡搴旂敤鍒板尮閰嶆鏁扮殑榪囩▼.
?  閲嶅鍓嶉潰鐨勫瓙妯″紡0嬈″埌涓嬈?br /> *  閲嶅鍓嶉潰鐨勫瓙妯″紡0嬈℃垨澶氭
+ 閲嶅鍓嶉潰鐨勫瓙妯″紡涓嬈″埌澶氭

澶嶆潅鍖歸厤渚嬩竴:閲嶅嬈℃暟鍖歸厤

 String[] dataArr = { "moon", "mon", "moon", "mono" };

    for (String str : dataArr) {
      String patternStr="m(o+)n";
     
      boolean result = Pattern.matches(patternStr, str);
      if (result) {
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"鎴愬姛");
      }
      else{
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"澶辮觸");
      }    
    }

妯″紡鏄?#8221;m(o+)n”,瀹冭〃紺簃n涓棿鐨刼鍙互閲嶅涓嬈℃垨澶氭,鍥犳moon,mon,mooon鑳藉尮閰嶆垚鍔?鑰宮ono鍦╪鍚庡浜嗕竴涓猳,鍜屾ā寮忓尮閰嶄笉涓?

娉?
+琛ㄧず涓嬈℃垨澶氭;?琛ㄧず0嬈℃垨涓嬈?*琛ㄧず0嬈℃垨澶氭.

澶嶆潅鍖歸厤浜?鍗曚釜瀛楃鍖歸厤

 String[] dataArr = { "ban", "ben", "bin", "bon" ,"bun","byn","baen"};

    for (String str : dataArr) {
      String patternStr="b[aeiou]n";
     
      boolean result = Pattern.matches(patternStr, str);
      if (result) {
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"鎴愬姛");
      }
      else{
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"澶辮觸");
      }    
    }

娉?鏂規嫭鍙蜂腑鍙厑璁哥殑鍗曚釜瀛楃,妯″紡“b[aeiou]n”鎸囧畾,鍙湁浠寮澶?n緇撳熬,涓棿鏄痑,e,i,o,u涓換鎰忎竴涓殑鎵嶈兘鍖歸厤涓?鎵浠ユ暟緇勭殑鍓嶄簲涓彲浠ュ尮閰?鍚庝袱涓厓绱犳棤娉曞尮閰?

鏂規嫭鍙穂]琛ㄧず鍙湁鍏朵腑鎸囧畾鐨勫瓧絎︽墠鑳藉尮閰?

澶嶆潅鍖歸厤涓?澶氫釜瀛楃鍖歸厤

 String[] dataArr = { "been", "bean", "boon", "buin" ,"bynn"};

    for (String str : dataArr) {
      String patternStr="b(ee|ea|oo)n";
     
      boolean result = Pattern.matches(patternStr, str);
      if (result) {
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"鎴愬姛");
      }
      else{
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"澶辮觸");
      }    
    }

濡傛灉闇瑕佸尮閰嶅涓瓧絎?閭d箞[]灝變笉鑳界敤涓婁簡,榪欓噷鎴戜滑鍙互鐢?)鍔犱笂|鏉ヤ唬鏇?()琛ㄧず涓緇?|琛ㄧず鎴栫殑鍏崇郴,妯″紡b(ee|ea|oo)n灝辮兘鍖歸厤been,bean,boon絳?
鍥犳鍓嶄笁涓兘鍖歸厤涓?鑰屽悗涓や釜涓嶈兘.

澶嶆潅鍖歸厤鍥?鏁板瓧鍖歸厤

 String[] dataArr = { "1", "10", "101", "1010" ,"100+"};

    for (String str : dataArr) {
      String patternStr="\\d+";
     
      boolean result = Pattern.matches(patternStr, str);
      if (result) {
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"鎴愬姛");
      }
      else{
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"澶辮觸");
      }    
    }

娉?浠庡墠闈㈠彲浠ョ煡閬?\\d琛ㄧず鐨勬槸鏁板瓧,鑰?琛ㄧず涓嬈℃垨澶氭,鎵浠ユā寮廫\d+灝辮〃紺轟竴浣嶆垨澶氫綅鏁板瓧.
鍥犳鍓嶅洓涓兘鍖歸厤涓?鏈鍚庝竴涓洜涓?鍙鋒槸闈炴暟瀛楀瓧絎﹁屽尮閰嶄笉涓?

澶嶆潅鍖歸厤浜?瀛楃鏁板瓧娣峰悎鍖歸厤

 String[] dataArr = { "a100", "b20", "c30", "df10000" ,"gh0t"};

    for (String str : dataArr) {
      String patternStr="\\w+\\d+";
     
      boolean result = Pattern.matches(patternStr, str);
      if (result) {
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"鎴愬姛");
      }
      else{
        System.out.println("瀛楃涓?+str+"鍖歸厤妯″紡"+patternStr+"澶辮觸");
      }    
    }

妯″紡\\w+\\d+琛ㄧず鐨勬槸浠ュ涓崟瀛楀瓧絎﹀紑澶?澶氫釜鏁板瓧緇撳熬鐨勫瓧絎︿覆,鍥犳鍓嶅洓涓兘鍖歸厤涓?鏈鍚庝竴涓洜涓烘暟瀛楀悗榪樺惈鏈夊崟瀛楀瓧絎﹁屼笉鑳藉尮閰?

浣跨敤姝e垯琛ㄨ揪寮忓妶鍒嗗瓧絎︿覆-浣跨敤瀛楃涓茬殑split鏂規硶

 String str="钖按,鑱屼綅 濮撳悕;騫撮緞 鎬у埆";
    String[] dataArr =str.split("[,\\s;]");
    for (String strTmp : dataArr) {
      System.out.println(strTmp);
    }

String綾葷殑split鍑芥暟鏀寔姝e垯琛ㄨ揪寮?涓婁緥涓ā寮忚兘鍖歸厤”,”,鍗曚釜絀烘牸,”;”涓殑涓涓?split鍑芥暟鑳芥妸瀹冧滑涓換鎰忎竴涓綋浣滃垎闅旂,灝嗕竴涓瓧絎︿覆鍔堝垎鎴愬瓧絎︿覆鏁扮粍.

浣跨敤Pattern鍔堝垎瀛楃涓?/strong>

String str="2007騫?2鏈?1鏃?;
Pattern p = Pattern.compile("[騫存湀鏃");
String[] dataArr =p.split(str);
for (String strTmp : dataArr) {
System.out.println(strTmp);
}

Pattern鏄竴涓鍒欒〃杈懼紡緇忕紪璇戝悗鐨勮〃鐜版ā寮?,瀹冪殑split鏂規硶鑳芥湁鏁堝妶鍒嗗瓧絎︿覆.
娉ㄦ剰鍏跺拰String.split()浣跨敤涓婄殑涓嶅悓.

浣跨敤姝e垯琛ㄨ揪寮忚繘琛屽瓧絎︿覆鏇挎崲

String str="10鍏?1000浜烘皯甯?10000鍏?100000RMB";
str=str.replaceAll("(\\d+)(鍏億浜烘皯甯亅RMB)", "$1錕?);
System.out.println(str);

涓婁緥涓?妯″紡“(\\d+)(鍏億浜烘皯甯亅RMB)”鎸夋嫭鍙峰垎鎴愪簡涓ょ粍,絎竴緇刓\d+鍖歸厤鍗曚釜鎴栧涓暟瀛?絎簩緇勫尮閰嶅厓,浜烘皯甯?RMB涓殑浠繪剰涓涓?鏇挎崲閮ㄥ垎$1琛ㄧず絎竴涓粍鍖歸厤鐨勯儴鍒嗕笉鍙?鍏朵綑緇勬浛鎹㈡垚錕?

鏇挎崲鍚庣殑str涓猴駿10 錕?000 錕?0000 錕?00000

浣跨敤matcher榪涜鏇挎崲

Pattern p = Pattern.compile("m(o+)n",Pattern.CASE_INSENSITIVE);

// 鐢≒attern綾葷殑matcher()鏂規硶鐢熸垚涓涓狹atcher瀵硅薄
Matcher m = p.matcher("moon mooon Mon mooooon Mooon");
StringBuffer sb = new StringBuffer();

// 浣跨敤find()鏂規硶鏌ユ壘絎竴涓尮閰嶇殑瀵硅薄
boolean result = m.find();

// 浣跨敤寰幆鎵懼嚭妯″紡鍖歸厤鐨勫唴瀹規浛鎹箣,鍐嶅皢鍐呭鍔犲埌sb閲?br /> while (result) {
m.appendReplacement(sb, "moon");
result = m.find();
}
// 鏈鍚庤皟鐢╝ppendTail()鏂規硶灝嗘渶鍚庝竴嬈″尮閰嶅悗鐨勫墿浣欏瓧絎︿覆鍔犲埌sb閲岋紱
m.appendTail(sb);

System.out.println("鏇挎崲鍚庡唴瀹規槸" + sb.toString());

浣跨敤Mather楠岃瘉IP鍦板潃鐨勬湁鏁堟?/p>

楠岃瘉鍑芥暟:
 public static boolean isValidIpAddr(String ipAddr){
    String regx="(\\d+).(\\d+).(\\d+) .(\\d+)";  
   
    if(Pattern.matches(regx, ipAddr)){
      Pattern pattern=Pattern.compile(regx);
     
      Matcher mather=pattern.matcher(ipAddr);
      while(mather.find()){
        for(int i=1;i<=mather.groupCount();i++){
          String str=mather.group(i);
         
          int temp=Integer.parseInt(str);
         
          if(temp>255 || temp<1){
            return false;
          }
        }
      }
    }
    else{
      return false;
    }
   
    return true;
  }

鎵ц璇彞:
 String[] ipArr = { "1.2.3.4", "3.2.1.5", "999.244.17.200", "233.200.18.20",
        "2.1.0.18", "0.2.1.19" };

    for (String str : ipArr) {
      if (isValidIpAddr(str)) {
        System.out.println(str + "鏄悎娉曠殑IP鍦板潃");
      } else {
        System.out.println(str + "涓嶆槸鍚堟硶鐨処P鍦板潃");
      }
    }


鎵ц緇撴灉:
1.2.3.4鏄悎娉曠殑IP鍦板潃
3.2.1.5鏄悎娉曠殑IP鍦板潃
999.244.17.200涓嶆槸鍚堟硶鐨処P鍦板潃
233.200.18.20鏄悎娉曠殑IP鍦板潃
2.1.0.18涓嶆槸鍚堟硶鐨処P鍦板潃
0.2.1.19涓嶆槸鍚堟硶鐨処P鍦板潃



]]>
主站蜘蛛池模板: 亚洲国产天堂久久综合网站| 免费观看四虎精品国产永久| 亚洲国产a∨无码中文777| 五月婷婷免费视频| 亚洲kkk4444在线观看| 国产成人福利免费视频| 亚洲AV中文无码乱人伦在线视色 | 一级毛片免费播放| 性做久久久久免费看| 精品久久香蕉国产线看观看亚洲| 国产99久久久久久免费看| 免费精品人在线二线三线区别| 国产成人精品日本亚洲网址| 免费的涩涩视频在线播放| 亚洲成人中文字幕| 亚洲免费无码在线| 亚洲成A人片777777| 久视频精品免费观看99| 亚洲欧美aⅴ在线资源| 国产大片线上免费看| 亚洲fuli在线观看| 国产在线不卡免费播放| a一级毛片免费高清在线| 亚洲精品无码久久千人斩| 69视频在线观看高清免费| 国产亚洲精品VA片在线播放| 日日AV拍夜夜添久久免费| 五月婷婷免费视频| 久久精品国产亚洲av日韩| a色毛片免费视频| 久久久久久亚洲Av无码精品专口| 91嫩草国产在线观看免费| 美女视频黄a视频全免费网站一区| 人与禽交免费网站视频| 亚洲爆乳成av人在线视菜奈实| 一色屋成人免费精品网站| 亚洲成av人无码亚洲成av人| 亚洲日本乱码在线观看| 一个人免费观看www视频在线| 四虎影视永久在线精品免费| 久久丫精品国产亚洲av不卡|