Java之正则表达式学习总结

/**当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串*/
		Pattern pattern = Pattern.compile("href=\"(.+?)\"");
		Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a><a href=\"index.html\">主页</a>");
		if (matcher.find())
			System.out.println(matcher.group(1));
		//匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用
		pattern = Pattern.compile("industr(?:y|ies)");
		matcher = pattern.matcher("industry|industries");
		if (matcher.find())
			System.out.println(matcher.group());
		
		//正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用
		pattern = Pattern.compile("Windows(?=95|98|NT|2000)");
		matcher = pattern.matcher("Windows2000");
		if (matcher.find())
			System.out.println(matcher.group());
		
		//正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用
		pattern = Pattern.compile("Windows(?!95|2000|NT)");
		matcher = pattern.matcher("Windows200");
		if (matcher.find())
			System.out.println(matcher.group());
		
		//反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,
		//但不能匹配“3.1Windows”中的“Windows”。
		pattern = Pattern.compile("(?<=95|2000|NT)Windows");
		matcher = pattern.matcher("2000Windows");
		if (matcher.find())
			System.out.println(matcher.group());
		
		//反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,
		//但不能匹配“2000Windows”中的“Windows”。
		pattern = Pattern.compile("(?<!95|2000|NT)Windows");
		matcher = pattern.matcher("20000Windows");
		if (matcher.find())
			System.out.println(matcher.group());
		
		

你可能感兴趣的:(Java之正则表达式学习总结)