正则表达式-Java实现-( )、|、

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cheng_cuo_tuo/article/details/88328023
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/*
	( 和 ) 括号里面的东西代表一个子表达式
*/

public class Subexpression1{
	public static void main(String[] args){
		String str = "Hello, my name is Ben Forta, and I am the author of books on SQL, ColdFusion, WAP, " +
			"Windows   2000, and other subjects.";
		//匹配出空格,也就是  
		// nbsp;{2,}
		Pattern p = Pattern.compile("( ){2,}");
		Matcher m = p.matcher(str);
		System.out.println(m.pattern()); //( ){2,}
		while (m.find()){
			System.out.println(m.group());
		}
		//    
		System.out.println();

		str = "Pinging hog.forta.com [12.159.46.200] with 32 bytes of data.";
		//匹配 IP 地址
		// \d{1, 3}\.\d{1,3}.\d{1,3}.\d{1,3}
		p = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
		m = p.matcher(str);
		System.out.println(m.pattern()); // \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
		while (m.find()){
			System.out.println(m.group());
		}
		// 12.159.46.200
		System.out.println();

		//使用正在表达式的子表达式,将 \d{1,3}\. 看作一个整体
		// (\d{1,3}\.){3}{\d{1,3}}
		p = Pattern.compile("(\\d{1,3}\\.){3}\\d{1,3}");
		m = p.matcher(str);
		System.out.println(m.pattern()); // \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
		while (m.find()){
			System.out.println(m.group());
		}
		// 12.159.46.200
	}
}
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
	| 或 操作是把位于它左边和右边按两个部分都作为一个整体来看待的
*/

public class Subexpression2{
	public static void main(String[] args){
		String str = "ID: 042 SEX: M DOB: 1967-08-17 Status: Active (20";
		//匹配出生日,生日的年份以 19 或 20 开头
		// (19|20)\d{2}
		Pattern p = Pattern.compile("(19|20)\\d{2}");
		Matcher m = p.matcher(str);
		while (m.find()){
			System.out.println(m.group());
		}
		// 1967
		System.out.println();

		// [(19)(20)]\d{2}  即使这样也不能完整的匹配出 19 和 20 开头的年份,可以看出 [ 和 ] 里面的所有
		// 内容都是看作 单独字符 处理的
		p = Pattern.compile("[(19)(20)]\\d{2}");
		m = p.matcher(str);
		System.out.println(m.pattern()); //[(19)(20)]\d{2}
		while (m.find()){
			System.out.println(m.group());
		}
		/*
		042
		196
		(20
		*/
	}
}
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/*
	匹配 IP 
	任何一个1位或2位数
	任何一个以1开头的3位数
	任何一个以2开头、第2位数字在0~4之间的3位数
	任何一个以25开头、第3位数字在0~5之间的3位数
*/

public class Subexpression3{
	public static void main(String[] args){
		String str = "Pinging hog.forta.com [12.159.46.200] with 32 bytes of data.";
		// (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
		Pattern p = Pattern.compile("(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))");
		Matcher m = p.matcher(str);
		System.out.println(m.pattern()); //(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
		while (m.find()){
			System.out.println(m.group());
		}
		//12.159.46.20
	}
}

猜你喜欢

转载自blog.csdn.net/cheng_cuo_tuo/article/details/88328023