![](https://i-blog.csdnimg.cn/blog_migrate/89f4db98af6f4cb6c87b611524fbbbaa.jpeg)
正则表达式学习
来源:点击打开链接
最近在自学正则表达式,在网上查看了一些资料,练手的过程中发现了一些小错误,于是在这边进行了纠正。
实例1
String data="java";
Pattern.matches("java",data);//true
Pattern.matches("javaf",data);//false
实例2
String[] dataArr = { "moon", "mon", "moon", "mono" };
//o+表示匹配1个或多个o,所以这个正则表达式匹配以m开头,以n结尾,中间至少有一个o的字符串
String patternStr = "m(o+)n";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串 '" + str + "' 匹配模式 '" + patternStr + "' 成功");
} else {
System.out.println("字符串 '" + str + "' 匹配模式 '" + patternStr + "' 失败");
}
}
实例3
String[] dataArr = { "ban", "ben", "bin", "bon" ,"bun","byn","baen"};
//b[aeiou]n等价于b(a|e|i|o|u)n,括号里面的字符是或者关系,一次只能匹配其中的一个
String patternStr="b[aeiou]n";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
实例4
String[] dataArr = { "been", "bean", "boon", "buin" ,"bynn"};
String patternStr="b(ee|ea|oo)n";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
实例5
String[] dataArr = { "1", "10", "101", "1010", "100+" };
String patternStr = "\\d+";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
} else {
System.out.println("字符串" + str + "匹配模式" + patternStr + "失败");
}
}
实例6
String[] dataArr = { "a100", "b20", "c30", "df10000", "gh0t" };
String patternStr = "\\w+\\d+";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
} else {
System.out.println("字符串" + str + "匹配模式" + patternStr + "失败");
}
}
实例7
String str="薪水,职位 姓名;年龄 性别";
String[] dataArr =str.split("[,\\s;]");
for (String strTmp : dataArr) {
System.out.println(strTmp);
}
实例8
String str = "2007年12月11日";
Pattern p = Pattern.compile("[年月日]");
String[] dataArr = p.split(str);
//String[] dataArr=str.split("[年月日]");//也可以直接这样写
for (String strTmp : dataArr) {
System.out.println(strTmp);
}
实例9
String str = "10元 1000人民币 10000元 100000RMB";
str = str.replaceAll("(?<=\\d+)(元|人民币|RMB)", "¥");
System.out.println(str);
实例10
Pattern p = Pattern.compile("m(o+)n",Pattern.CASE_INSENSITIVE);
// 用Pattern类的matcher()方法生成一个Matcher对象
Matcher m = p.matcher("moon mooon Mon mooooon Mooon test");
StringBuffer sb = new StringBuffer();
// 使用循环找出模式匹配的内容替换之,再将内容加到sb里
while ( m.find()) {
m.appendReplacement(sb, "moon");
}
// 最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里。
//这边是把Moon之后的 test写到sb里面
m.appendTail(sb);
System.out.println("替换后内容是" + sb.toString());
实例11
String[] dataArr = { "google", "gooogle", "gooooogle", "goooooogle","ggle" };
String patternStr = "g(o{2,5})gle";
for (String str : dataArr) {
if (Pattern.matches(patternStr, str)) {
System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
} else {
System.out.println("字符串" + str + "匹配模式" + patternStr + "失败");
}
}
实例12
String[] dataArr = { "Tan", "Tbn", "Tcn", "Ton", "Twn" };
String regex = "T[a-c]n";
for (String str : dataArr) {
if (Pattern.matches(regex, str)) {
System.out.println("字符串" + str + "匹配模式" + regex + "成功");
} else {
System.out.println("字符串" + str + "匹配模式" + regex + "失败");
}
}
实例13
不区分大小写匹配
String patternStr = "ab";
Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
String[] dataArr = { "ab", "Ab", "AB" };
Matcher matcher = null;
for (String str : dataArr) {
matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println("字符串" + str + "匹配模式" + patternStr + "成功");
}
}
实例14
String input = "职务=GM 薪水=50000 , 姓名=职业经理人 ; 性别=男 年龄=45 ";
String patternStr = "(\\s*,\\s*)|(\\s*;\\s*)|(\\s+)";
Pattern pattern = Pattern.compile(patternStr);
String[] dataArr = pattern.split(input);
for (String str : dataArr) {
System.out.println(str);
}
实例15
(有问题)
String regex = "<(\\w+)>(\\w+)</>";
Pattern pattern = Pattern.compile(regex);
String input = "<name>Bill</name><salary>50000</salary><title>GM</title>";
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group(2));
}
实例16
//实例十六:将单词数字混合的字符串的单词部分大写.
String regex="([a-zA-Z]+[0-9]+)";
Pattern pattern=Pattern.compile(regex);
String input="age45 salary500000 50000 title";
Matcher matcher=pattern.matcher(input);
StringBuffer sb=new StringBuffer();
String replacement=null;
while(matcher.find()){
replacement=matcher.group(1).toUpperCase();
matcher.appendReplacement(sb, replacement);
}
matcher.appendTail(sb);
System.out.println("替换完的字串为"+sb.toString());