package com.ricky.chapter5;public class Example4 {
public static void main(String[] args){
/*
* 为什么方法一和方法二的结果不一样呢?
*/
method1();
method2();
}
public static void method1(){
String message = "c:/program files/java/src/ricky.java";
String regex = "([^//]*)$";
message = message.replaceAll(regex, "newFileName");
System.out.println(message);
}
public static void method2(){
String message = "c:/program files/java/src/ricky.java";
String regex = "([^//]+)$";
message = message.replaceAll(regex, "newFileName");
System.out.println(message);
}
}
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
输出结果为:
c:/program files/java/src/newFileNamenewFileName
c:/program files/java/src/newFileName
初时,也感到奇怪,怎么1后面有2个newFileName.为了分析方便,我把message后面加了'/',
即:String message = "c:/program files/java/src/ricky.java/";
输出结果为:
c:/program files/java/src/ricky.java/newFileName
c:/program files/java/src/ricky.java/因为,String regex = "([^//]*)$";
分解含义为:( ([^//]+)$) | ($) )
分解含义为:( ([^//]+)$) | ($) ) ??
4楼的兄弟,那么为什么会出现后面有两个呢?