package demo.api;
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.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));
}
@Test
public void matchingPhoneNumber() {
String phoneNumber = "13027572303";
System.out.println(phoneNumber.length());
String regex = "1[358]\\d{9}";
System.out.println("手机号:" + phoneNumber + " 是否成功:" + phoneNumber.matches(regex));
String qq = "1234543";
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");
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";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
System.out.println("子序列位置:[" + m.start() + "," + m.end() + ")");
}
}
}