java 正則_java 正則表達式的使用 | 學步園

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Test {

/**

* @param args

*/

public static void main(String[] args) {

/**

* String常用的3個正則表達式函數

*/

System.out.println("abc0".matches("abc"));

System.out.println("a0000bc".replaceAll("\\d", "*"));

System.out.println("a0000bc".replaceFirst("\\d", "*"));

String s = "a0000bc";

System.out.println(s.replaceFirst("\\d", "_"));//replaceFirst原串是不變的返回一個新串

System.out.println("s:"+s);

Pattern p = Pattern.compile("[a-z]{3}");

Matcher m = p.matcher("fgh");

// matches()匹配整個字元串

System.out.println(m.matches());//等價於"fgh".matches("[a-z]{3}");

Matcher ma = Pattern.compile("\\d{3,5}").matcher("123-345345-234-00");

System.out.println(ma.matches());//有過一次匹配游標就不是從頭開始了。

ma.reset();//所以要reset

System.out.println(ma.find());//返回boolean類型

System.out.println(ma.start()+"->"+ma.end());//找到才能調用方法

//不然會報異常錯誤

//>=start && <=end

System.out.println(ma.find());

System.out.println(ma.find());

System.out.println(ma.find());

//沒有reset()結果會不一樣

//每次都是從頭開始找的

System.out.println(ma.lookingAt());

System.out.println(ma.lookingAt());

System.out.println(ma.lookingAt());

System.out.println(ma.lookingAt());

/**

* 奇偶分別替換成大寫和小寫

*/

Matcher m1 = Pattern.compile("java", Pattern.CASE_INSENSITIVE)

.matcher("java JaVa JAva ILoveJavA youhateJAVA adsf");

StringBuffer sb = new StringBuffer();

int i = -1;

while(m1.find()){

i++;

if(i%2==0){

m1.appendReplacement(sb, "java");

//將找到的串替換後加上之前不是的串都放在sb裡面

//所以第四個列印為 java JAVA java ILoveJAVA

System.out.println("|"+sb+"|");

}else{

m1.appendReplacement(sb, "JAVA");

System.out.println("|"+sb+"|");

}

}

m1.appendTail(sb);

System.out.println("|"+sb+"|");

Matcher m2 = Pattern.compile("(\\d{3,5})([a-z]{2})")

.matcher("123aa-23433bb-234cc-00");

while(m2.find()){

System.out.println(m2.group());

System.out.println(m2.group(1));

System.out.println(m2.group(2));

}

}

/**

* 總結下,常用的就是

* Matcher m = Pattern.compile(regExp).Matcher(string);

* while(m.find()){

* m.group();

* m.group(index);//如果有分組

* m.start();//start匹配開始得到的下標

* m.end();//end為匹配得到的後一個下標

* }

*

* 其他方法: m.reset()//復原游標

* m.lookingAt()//永遠找第一個無視游標

* m.matches() //是否匹配,等價於String的matches(regExp)

* m.appendReplacement(stringBuffer,newString);//直到找到匹配的替換後一起放入stringBuffer

* m.appendTail();//appendReplacement最後可能剩餘沒有的串

*

* String類用到的: replaceAll(regExp,newString)

* replaceFirst(regExp,newString)

* matches(regExp)

*

* 至於正則模式的寫法,和JS的正則一模一樣:

* (?=a) ?!a

*/

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值