关于Pattern类与Matcher类介绍(三)

Pattern p1=Pattern.compile("a"); //指定正则表达式
		Matcher m1=p1.matcher("This is a plain text"); //指定要操作的字符串
		
		//find(),start(),end()方法都是非静态方法,故通过Matcher类的对象访问
		//Matcher类的find()方法查找,找到返回true,否则返回false
		//Matcher类的start()方法以整数返回找到的起始位置
		//Matcher类的end()方法以整数放回找到的结束位置
		//每次找到打印找到的起始位置和结束位置,位置从0开始,第一个“徐”前面的位置为0
		while(m1.find()){
			System.out.println("找到张三三,起始位置:"+m1.start(0)+",结束位置:"+m1.end());
		}
		
		//replaceFirst将m1中找到的p1指定的第一个张三三替换成李四四
		String result1=m1.replaceFirst("李四四");
		System.out.println(result1);
		
		//replaceAll将m1中找到的p1指定的所有张三三替换成李四四
		String result2=m1.replaceAll("李四四");
		System.out.println(result2);
		
		Pattern p2=Pattern.compile("Anna");
		Matcher m2=p2.matcher("Anna is female, Anna 有文化, Anna 有思想");
		
		//StringBuffer字符串类,如果一个字符串的内容经常更改,请使用StringBuffer类,而不是String类
		StringBuffer sb=new StringBuffer();
		//appendReplacement每次找到之后追加到指定的字符串cute
		while(m2.find()){
			m2.appendReplacement(sb, "纪晓岚"); //每次找到Anna后,替换成纪晓岚,然后将替换结果追加到字符串sb
			System.out.println(sb);
		}
		
		//appenTail方法把最后剩余的字符串追加到sb字符串上
		m2.appendTail(sb);
		System.out.println(sb);
输出结果:
找到张三三,起始位置:8,结束位置:9
找到张三三,起始位置:12,结束位置:13
This is 李四四 plain text
This is 李四四 pl李四四in text
纪晓岚
纪晓岚 is female, 纪晓岚
纪晓岚 is female, 纪晓岚 有文化, 纪晓岚
纪晓岚 is female, 纪晓岚 有文化, 纪晓岚 有思想

关于正则表达式,求Pattern,Matcher 详细解说!

10-23

Pattern:正则表达式的编译表示形式.rnrn[code=Java]rn Pattern p = Pattern.compile("a*b"); //将给定的正则表达式编译到模式中。rn Matcher m = p.matcher("aaaaab"); //创建匹配给定输入与此模式的匹配器。rn boolean b = m.matches(); //尝试将整个区域与模式匹配。 rn m.find(); /*尝试查找与该模式匹配的输入序列的下一个子序列。此方法从匹配器区域的开头开始,如果该方法的前一次rn *调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。rn */rn m.group();// 返回由以前匹配操作所匹配的输入子序列。 rn[/code]rnrnMatcher 与Pattern 的关系?rnrnPattern p = Pattern.compile("a*b"); 根据API解释,这个方法的意义在于将Regex装载到Pattern(模式)中! 这里Pattern类似与模板的意思吧!个人理解!rnrnp.matcher("aaaaab");如何解释这个方法? 让模式和字符串匹配?得出什么结果呢? Matcher(匹配器!?) 我解释不通?rnrnp.matcher("aaaaab"); 和rnp.matcher("aaaaaaaaaaaab"); 的返回值是一个对象么? 为什么?rn rnboolean b = m.matches(); API的解释什么意思,看不明白! 这个区域?在那里!范围是什么? rnrnm.group();子序列是什么东西! 这里根据API的解释,Matcher 类似与Collection(容器) 或持有容器.容器中的元素是子序列!但是,问题出来了:子序列如何得到的?来源是哪里?rnrnm.find();m.find(int start)如果matcher是容器或持有容器,那么这个方法就类似与iterator.next();list.get(int index);rnrn好了先写这么多吧!剩下的什么时候想起什么时候问!谢谢各位了!rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试