package demo.api;
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//JavaSE文档 Pattern类
public class 正则表达式 {
//匹配演示
@Test
public void matching() {
String regex = "ao?b";
System.out.println(regex + ": o出现零次或一次: " + "aob".matches(regex));
regex = "ao*b";
System.out.println(regex + ": o出现零次或多次: " + "aob".matches(regex));
regex = "ao+b";
System.out.println(regex + ": o出现一次或多次: " + "ab".matches(regex));
regex = "ao{2}b";
System.out.println(regex + ": o出现两次: " + "aoob".matches(regex));
regex = "ao{2,}b";
System.out.println(regex + ": o出现至少 2 次: " + "aoob".matches(regex));
regex = "ao{2,5}b";
System.out.println(regex + ": o出现至少 2 次,但是不超过 5 次: " + "aooooob".matches(regex));
}
//匹配手机号和QQ号
@Test
public void matchingPhoneNumber() {
String phoneNumber = "13027572303";
System.out.println(phoneNumber.length());
String regex = "1[358]\\d{9}";//1[358][0-9]{9} //第一位1,第二位3或5或8,后面9位为数字
System.out.println("手机号:" + phoneNumber + " 是否成功:" + phoneNumber.matches(regex));
String qq = "1234543";//长度5~15. 只能是数字, 0不能开头
regex = "[1-9]\\d{4,14}";
System.out.println("匹配QQ号:" + qq + ": " + qq.matches(regex));
}
//切割字符串
@Test
public void splitString() {
String str = "a b z adw zxcx z ";
String[] strArr = str.split(" +");//切割一个或多个空格
System.out.println("切割一个或多个空格:");
for (String s : strArr) {
System.out.println(s);
}
str = "a.b.sfe.sf";
strArr = str.split("\\.");//转义.
System.out.println("切割.:");
for (String s : strArr) {
System.out.println(s);
}
str = "a###b@@cttttd";
//组 第一组内容是一个任意字符 切割含有多个第一组内容的字符串 也就是切割含有多个相同任意字符的字符串
strArr = str.split("(.)\\1+");
System.out.println("切割多个相同字符:");
for (String s : strArr) {
System.out.println(s);
}
}
//替换字符串
@Test
public void replaceString() {
String str = "a##bttttc";
str = str.replaceAll("(.)\\1+", "@");
System.out.println("替换重复字符串为@: " + str);
str = "a##bttttc";
str = str.replaceAll("(.)\\1+", "$1");//$1使用正则中的第一组
System.out.println("替换重复字符串为单个字符: " + str);
str = "13027572303";
str = str.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");//第一组第二组照搬,中间替换
System.out.println("隐藏手机号:" + str);
}
//获取字符串
@Test
public void getString() {
String str = "da jia hao, ming tan fang jia!";
String regex = "\\b[a-z]{3}\\b";//查找三个字符的字符串,\b字母边界
//1,将正则封装成对象。
Pattern p = Pattern.compile(regex);
//2, 通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//使用Matcher对象的方法对字符串进行操作。
while (m.find()) {
System.out.println(m.group());//获取匹配的子序列
System.out.println("子序列位置:[" + m.start() + "," + m.end() + ")");
}
}
}
正则表达式常用方法
最新推荐文章于 2023-06-16 12:15:35 发布