java的正则表达式

正则表达式简介

1.实际开发中,经常需要对字符串数据进行一些复杂的匹配、查找、替换等操作。通过“正则表达式”,可以方便的实现字符串的复杂操作。

2.正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”是描述文本规则的工具。正则表达式就是记录文本规则的代码。

3.例如:
——正则表达式:“[a-z]”表示a到z的任意一个字符。
——正则表达式:“[a-z]+"表示由1个或多个a-z字符组成的字符串;

正则表达式字符集合

正则表达式说明
[abc ]a、b、c中任意一个字符
[^abc ]除了a、b、c中任意一个字符
[a-z]a、b、c、…、z 中的任意一个字符
[a-zA-Z0-9]az、AZ、0~9 中任意一个字符
[a-z&&[^bc]]a~z 中除了 b 和 c 以外的任意一个字符,其中&&表示“与”的关系

测试正则表达式:

字符集合
public void testRegEx3(){
String regex1 = “[a-z]”; String regex2 = “[^a-z]”;
String regex3 = “[a-z&&[^bc]]”;
String regex4 = “\d”; //[0-9]
String regex5 = “\D”; //[^0-9]
String regex6 = “\s”; //[\t\n\x0B\f\r]
String regex6 = “\S”; //[^\s]
String regex6 = “\w”; //[a-zA-Z_0-9]
String regex6 = “\W”; //[^\w]
}

System.out.println(“a”.matches(regex1)); //true
System.out.println(“b”.matches(regex2)); //false
System.out.println(“f”.matches(regex3)); //true
System.out.println(“b”.matches(regex3)); //false
System.out.println(“1”.matches(regex4)); //true
System.out.println(“1”.matches(regex5)); //false
System.out.println(“ ”.matches(regex6)); //true
System.out.println(“ ”.matches(regex7)); //false
System.out.println(“”.matches(regex8)); //true
System.out.println(“
”.matches(regex9)); //false

正则表达式预定义字符集

正则表达式说明
.任意一个字符
\d任意一个数字字符
\w单词字符,相当于[a-zA-Z0-9_]
\s空白字符,相当于[ \t\n\x\0B\f\r ]
\D非数字字符
\W非单词字符
\S非空白字符

正则表达式的数量词

正则表达式说明
X?表示0个或1个X
X*表示0个或任意多个X
X+表示1个到任意多个X(大于等于1个)
X{n}表示n个X
X{n,}表示n个到任意多个X(大于等于n个X)
X{n,m}表示n个到m个X

检索邮政编码:
— 规则为6位数字
— 第一种匹配规则 [0-9][0-9][0-9][0-9][0-9][0-9]
— 简化第一种规则 \d\d\d\d\d\d
— 简化第二种规则 \d{6}

测试正则表达式:"*"、"+"、"?" */ public void testRegEx1(){

String regex1 = “[a-z]”;
String regex2 = “\w+\.jar”;
String regex3 = “\d?[a-z]
”;

System.out.println(“abcde”.matches(regex1)); //true
System.out.println(“ ”.matches(regex1)); //true System.out.println(“lang.jar”.matches(regex2)); //true System.out.println(“.jar”.matches(regex2)); //false System.out.println(“1abcr”.matches(regex3)); //true System.out.println(“123abc”.matches(regex3)); //false System.out.println(“abc”.matches(regex3)); //true
}

测试正则表达式:{n}、{n,}、{n,m}
public void testRegEx2(){
String regex1 = “\w{5}”;
String regex2 = “\d{5}”;
String regex3 = “[a-zA-Z]{5,8}*”;

System.out.println(“abcef”.matches(regex1)); //true System.out.println(“abcefg”.matches(regex1)); //false System.out.println(“12345”.matches(regex2)); //true System.out.println(“123456”.matches(regex2)); //true System.out.println(“1234”.matches(regex2)); //false System.out.println(“Hello”.matches(regex3)); //true System.out.println(“HelloWorld”.matches(regex3)); //false
}

正则表达式的分组

分组:() 圆括号表示分组,可以将一系列正则表达式看作一个整体, 分组时可以使用“|”表示“或”关系。
例如:匹配手机号码前面的 区号:(+86|0086)?\s?\d{11}
上述例子中,圆括号表示这里需要出现“+86”或者“0086”

检索手机号码:+86 13838389438
— +86 可有可无
— +86与后面的号码之间空格可以没有或者有多个
— 电话号码为11位数字

边界匹配
— ^代表字符串开始
— $代表字符串结束
— $代表字符串结束
例如:匹配用户名规则 — 从头到尾连续8~10个单词字符

\w{8,10}
^\w{8,10}$

如果使用第一种写法,则”abcd1234_abcd”是可以验证通过的;
使用第二种写法由于有从头到尾整体的限定,则验证不能通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值