java中使用正则表达式

正则表达式是含有一些具体意义的字符的字符串,这些字符称为正则表达式的元字符。

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一个格式

元字符表

元字符正则表达中的写法意义
..代表任意一个字符
\d\\d代表0~9的任意一个数字
\D\\D代表任意一个非数字字符
\s\\s代表空白字符,如'\t',‘\n’
\S\\S代表非空白字符
\w\\w代表可用作表标识符的字符,即字母或数字或下划线
\W\\W代表不可用作标识符的字符

也可以java内置的通用字符簇

元字符正则表达中的写法意义
\p{Lower}\\p{Lower}代表小写字母a-z
\p{Upper}\\p{Upper}代表大写字母A-Z
\p{ASCII}\\p{ASCII}ASCII字符
\p{Alpha}\\p{Alpha}字母字符
\p{Digit}\\p{Digit}十进制数字,即0-9
\p{Alpnum}\\p{Alpnum}数字或字母字符
\p{Punct}\\p{Punct}标点符号:`~!@#$%^&*()_-=+{}[]\|;":',<.>/?
\p{Graph}\\p{Graph}可见字符:[\p{Alpnum}\p{Punct}]
\p{Print}\\p{Print}可打印字符:[\p{Graph}\x20]即可见字符和空格
\p{Blank}\\p{Blank}空格或制表符:[\t]
\p{Cntrl}\\p{Cntrl}控制字符:[\x00-\x1F\x7F]

控制字符,不可见字符,可打印字符和可见字符参考:ascii控制字符(不可见字符)和可打印字符(可见字符)

正则表达式中[]的使用

在正则表达式中可以使用中括号括起来若干字符来表示一个元字符,其中&,|,^分别表示与,或,非。如:

        [abc]4: 表示 a4,b4,c4

        [^456]: 表示4,5,6之外的任何字符

        [a-r]: 表示a-r中的任何一个字符

        [a-zA-Z]: 表示任意一个英文字母

        [a-e[g-z]]: 表示a-e或g-z中的任意一个字母(并运算)

        [a-p&&[def]]: 表示字母d,e,f(交运算)

        [a-d&&[^bc]]: 表示字母a,d(差运算)

限定修饰符

在正则表达式中允许使用限定修饰符来限定元字符出现的次数

限定修饰符意义示例
0次或1次A?
*0次或多次A*
+1次或多次A+
{n}正好出现n次A{2}
{n,}至少n次以上A{2,}
{n,m}出现n~m次A{2,3}

 

在正则表示式中()的使用

在正则中()一般用于分组,一般和 &,|,^以及限定修饰符搭配,如:

MAC地址:12-CD-EE-FF-cf-dF 

正则表达式匹配规则:[0-9A-Fa-f]{2}(-[0-9A-Fa-f]{2}){5}

 

以常见的email为例

public static void main(String[] args) {
		//以常见的E-mail地址为例,通常情况下E-mail的格式为X@X.com
		//X表示任意字符,".com"表示后缀名,可以是2个或3个字符,需要注意是X可以包含".cn"或".com"的字符
		//"\\w+@\\w+"表示X@X,"(\\.\\w{2,3})*"表示第二个X中可以出现0次或多次形如".com"的字符,
		//"\\.\\w{2,3}"表示以形如".com"或".cn"的字符结尾
		String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
		String s1 = "123a@123";
		String s2 = "456a@456.c";
		String s3 = "2145ab@chenfuzhe.com";
		String s4 = "2145*@qq.edu.com";//\\w匹配的是字母或数字或下划线,不包括*
		
		if(s1.matches(regex)){
			System.out.println(s1+"符合email地址的正则表达式");
		}
		if(s2.matches(regex)){
			System.out.println(s2+"符合email地址的正则表达式");
		}
		if(s3.matches(regex)){
			System.out.println(s3+"符合email地址的正则表达式");
		}
		if(s4.matches(regex)){
			System.out.println(s4+"符合email地址的正则表达式");
		}
		
	}

输出结果是:

2145ab@chenfuzhe.com符合email地址的正则表达式

 

参考资料:

《java从入门到精通》第四版 明日科技 著 2016年10月

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值