Java 正则表达式的总结和一些小例子(验证和修改过的版本)

Cooking Regex微信公众号
正则表达式学习

 

来源:点击打开链接

最近在自学正则表达式,在网上查看了一些资料,练手的过程中发现了一些小错误,于是在这边进行了纠正。

 

实例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());

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值