import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Reg {
public static void main(String args[]){
String[] dataArr = { "moson", "mon", "smson", "mon" };
String patternStr=".*m(o+s+o+)n"; //* 表示零次或多次 +表示一次或多次
boolean result = Pattern.matches(patternStr, dataArr[0]);
if (result) {
System.out.println("字符串"+dataArr[0]+"匹配模式"+patternStr+"成功");
}else{
System.out.println("字符串"+dataArr[0]+"匹配模式"+patternStr+"失败");
}
patternStr=".?m(o+)n"; //? 表示一次或零次
result = Pattern.matches(patternStr, dataArr[1]);
if (result) {
System.out.println("字符串"+dataArr[1]+"匹配模式"+patternStr+"成功");
}else{
System.out.println("字符串"+dataArr[1]+"匹配模式"+patternStr+"失败");
}
patternStr=".+m(o+)n";
result = Pattern.matches(patternStr, dataArr[2]);
if (result) {
System.out.println("字符串"+dataArr[2]+"匹配模式"+patternStr+"成功");
}else{
System.out.println("字符串"+dataArr[2]+"匹配模式"+patternStr+"失败");
}
patternStr="m(o+)n";
result = Pattern.matches(patternStr, dataArr[3]);
if (result) {
System.out.println("字符串"+dataArr[3]+"匹配模式"+patternStr+"成功");
}else{
System.out.println("字符串"+dataArr[3]+"匹配模式"+patternStr+"失败");
}
System.out.println("---------test[]------------------");
String[] dataArr1 = {"ban","ben","bin","bon","bun","byn","baen"};
patternStr="b[aeoy]+n"; //表示匹配[]中任意一个字符,注意,只能是一个,此处可通过添加+来增加
for (String str : dataArr1) {
boolean result1 = Pattern.matches(patternStr, str);
if (result1) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
System.out.println("---------test()------------------");
String[] dataArr2 = {"ban","ben","bin","bon","bun","byn","baen"};
patternStr="b(ae|o)n"; //表示匹配()中多个字符,可通过|来添加匹配
for (String str : dataArr2) {
boolean result2 = Pattern.matches(patternStr, str);
if (result2) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
System.out.println("---------test - ------------------");
String[] dataArr3 = { "1", "10", "101", "1010" ,"100+"};
patternStr="[0-9]+";
for (String str : dataArr3) {
boolean result3 = Pattern.matches(patternStr, str);
if (result3) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
System.out.println("---------test '\'d ------------------");
String[] dataArr4 = { "1", "10", "101", "1010" ,"100+"};
for (String str : dataArr4) {
patternStr="\\d+"; //\\d代表数字
boolean result4 = Pattern.matches(patternStr, str);
if (result4) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
System.out.println("---------test String split ------------------");
String str1="薪水,职位 姓名;年龄 性别";
String[] dataArr5 =str1.split("[,\\s;]"); //String中可以使用split,\\s表示空格
for (String strTmp : dataArr5) {
System.out.println(strTmp);
}
System.out.println("---------test '\'w ------------------");
String[] dataArr6 = { "a100", "b20", "c30", "df10000" ,"gh0t"};
for (String str : dataArr6) {
patternStr="\\w+\\d+";
boolean result6 = Pattern.matches(patternStr, str);
if (result6) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
System.out.println("--------- Pattern split 分割 ------------------");
String str="2007年12月11日";
Pattern p = Pattern.compile("[年月日]");
String[] dataArr7 =p.split(str); //使用正则分割
for (String strTmp : dataArr7) {
System.out.println(strTmp);
}
System.out.println("--------- String replaceAll ------------------");
str="10元 1000人民币 10000元 100000RMB";
str=str.replaceAll("(元|人民币|RMB)", "¥"); //String的replaceAll采用正则替换
System.out.println(str);
System.out.println("--------- String find 依次往下查找匹配的对象 ------------------");
p = Pattern.compile("m(o+)n",Pattern.CASE_INSENSITIVE);
// 用Pattern类的matcher()方法生成一个Matcher对象
Matcher m = p.matcher("moon mooon Mon mooooon Mooon");
StringBuffer sb = new StringBuffer();
// 使用find()方法查找第一个匹配的对象
boolean result8 = m.find();
// 使用循环找出模式匹配的内容替换之,再将内容加到sb里
while (result8) {
m.appendReplacement(sb, "moon");
result8 = m.find();
}
// 最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;
m.appendTail(sb);
System.out.println("替换后内容是" + sb.toString());
System.out.println("--------- String goup ------------------");
String s = "person[0].name";
Pattern pattern = Pattern.compile("[a-z|0-9]+\\[\\d+\\].[a-z|0-9]+");
Matcher matcher = pattern.matcher(s);
boolean b = Pattern.matches("[a-z|0-9]+\\[\\d+\\].[a-z|0-9]+",s);
System.out.println(b);
pattern = Pattern.compile("\\[\\d+\\]");
matcher = pattern.matcher(s);
if(matcher.find()){
System.out.println(matcher.group(0));
}
System.out.println("--------- String goup ------------------");
String regex="([a-zA-Z]+[0-9]+)";
pattern=Pattern.compile(regex);
//String input="age45 salary500000 50000 title";
String input="age45";
matcher=pattern.matcher(input);
sb=new StringBuffer();
while(matcher.find()){
System.out.println(matcher.group(1));
String replacement=matcher.group(1).toUpperCase();
matcher.appendReplacement(sb, replacement);
}
matcher.appendTail(sb);
System.out.println("替换完的字串为"+sb.toString());
}
}