前前一期说了正则表达式校验金额最多保留两位小数(感兴趣的小伙伴可以过去看看)
其中提到了^和$,当时只是简单说明了这个表达式,今天来详细说明一下使用方法
先说明一下两个表达式含义:
^匹配开始位置
$匹配结束位置
来看个简单的demo
import java.util.regex.Pattern;
/**
* @author yanghao
* @version PatternTest.java, v 0.1 2019-03-30 09:41
*/
public class PatternTest {
/**
* 待匹配字符串
*/
private static final String tempStr = "A.B.C.D";
/**
* 匹配开始位置表达式
*/
private static final Pattern PATTERN_START = Pattern.compile("^A");
/**
* 匹配结束位置表达式
*/
private static final Pattern PATTERN_END = Pattern.compile("D$");
public static void main(String[] args){
System.out.println("PATTERN_START === " + PATTERN_START.matcher(tempStr).replaceAll("demo"));
System.out.println("PATTERN_END === " + PATTERN_END.matcher(tempStr).replaceAll("demo"));
}
}
运行结果如下:
PATTERN_START === demo.B.C.D
PATTERN_END === A.B.C.demo
从运行结果可以看出,待匹配字符串的开始和结尾已经被替换掉了
我们在来看下,非开头和结尾的情况
编写demo如下:
import java.util.regex.Pattern;
/**
* @author yanghao
* @version PatternTest.java, v 0.1 2019-03-30 09:41
*/
public class PatternTest {
/**
* 待匹配字符串
*/
private static final String tempStr = "A.B.C.D";
/**
* 开始+中间字符串表达式
*/
private static final Pattern PATTERN_START_MIDDLE = Pattern.compile("^B");
/**
* 中间字符串表达式
*/
private static final Pattern PATTERN_MIDDLE = Pattern.compile("B");
public static void main(String[] args){
System.out.println("PATTERN_START_MIDDLE === " + PATTERN_START_MIDDLE.matcher(tempStr).replaceAll("demo"));
System.out.println("PATTERN_MIDDLE === " + PATTERN_MIDDLE.matcher(tempStr).replaceAll("demo"));
}
}
运行结果如下:
PATTERN_START_MIDDLE === A.B.C.D
PATTERN_MIDDLE === A.demo.C.D
此测试结果可以看出,如果加了^表达式,表示一定要以此为开始才能匹配到,那么同理,$表达式一定要以此为结尾才能匹配到,小伙伴们可以自己去写个demo测试一下?