正则表达式
来源:互联网 发布:mac度数符号怎么打 编辑:程序博客网 时间:2024/05/29 18:02
预定义字符类
. 任意字符 \d 数字:[0-9] \D 非数字:[^0-9] \s 空白字符:[\t\n\x08\f\t] \S 非空白字符:[^\s] \w 单词字符:[a-z,A-Z_0-9] \W 非单词字符:[^\w] 注意:没有加上数量词之前都只能匹配一个字符
数量词
? 一次或一次也没有 * 零次或多次 + 一次或多次 {n} 恰好n次 {n,} 至少n次 (n,m) 至少n次,至多不超过m次
范围词
[abc] a,b或c(简单类) [^abc] 任何字符,除了abc [a-zA-Z] a到z或A到Z [a-d[m-p]] a到d或m到p(并集) [a-z&&[def]] a到z与d,e,f的交集->d,e,f 注意:没有数量词就只能匹配一个
分组
目的:让正则的内容被复用,组号从1开始((A)(B(C)))组号1:((A)(B(C)))组号2:(A)组号3:(B(C))组号4:(C)\1:引用第一组所匹配的内容
作用
1.匹配
匹配手机号等等matchesphone()
matchesTellphone
public static void matchesPhone(String phone)
{
//第一位必须为1,第二位34578,一共11位,全是数字
String s=”1[34578]\d{9}”;
System.out.println(phone.matches(s)?”合法手机号”:”非法手机号”);
}
public static void matchesTellphone(String tellphone)
{
//匹配成都区号028,字符 - ,号码8位,8开头,2是第二个,后面还有6位
String s=”0\d{2,3}-[1-9]\d{6,7}”;
System.out.println(tellphone.matches(s)?”合法固定电话”:”非法固定电话”);
}
2.切割
split();
” +”:空格切割
“(.)//1+”:重复字符切割,任意内容重复1次或一次以上,就切割
public static void testsplit1(String s)
{
//空格切割
String[] data=s.split(” +”);
System.out.println(Arrays.toString(data));
}
public static void testsplit2(String s)
{
String[] data=s.split(“(.)\1+”);
System.out.println(Arrays.toString(data));
}
3.替换
replaceAll(String regex(正则表达式),String replacement(代替内容))
public static void replacephone(String s)
{
String re=”1[34578]\d{9}”;
s=s.replaceAll(re,”**“);
System.out.println(s);
}
如果需要再replace方法正则外部引用组的内容,那么使用"$组号",如$1
public static void wordreplace(String reword)
{
String s=”(.)\1+”;
reword= reword.replaceAll(s,”
System.out.println(reword);
}
}
4.查找
查找需要使用对象:
一.pattern(正则对象)
指定为字符串的正则表达式必须先编译为此类的实例,然后,可将得到的正则对象匹配任意的字符串用于
创建Matcher对象,依照正则表达式,该对象可以与任意字符序列匹配,执行破匹配所涉及的所有状态都
驻留在匹配器中,所以多个匹配器可以共享同一模式
因此,典型的调用顺序是:
Pattern p=Pattren.compile(“正则表达式”);//正则表达式编译为正则对象p
Matcher m=p.matcher(“aaaaab”);//正则对象匹配字符串产生一个匹配器,所有信息留在匹配器里
boolean b=m.matches();
匹配器会用到的方法
1.find() 通过匹配去匹配字符串,查找符合规则的字符串
2.group() 获取符合规则的子串,(使用group()方法必须先调用find()去查找是否有符合规则的字符串,不然会报错)
String content=”来啊:1209024357@qq.com,来啊:1209fdwsg@qq.com,来啊:15678532@qq.com.cn,来啊:fenfne@136.com” +
“,来啊:126546557@qq.com,来啊:afhjfs@163.com,来啊:54564546@qq.net,来啊:hkhhjfs@163.com.cn” +
“,来啊:984785547@qq.cn.com,来啊:12234157@qq.com”;
Pattern p=Pattern.compile(“\b[a-zA-Z1-9]\w{5,17}@[a-zA-Z0-9]{2,}(\.(com|cn|net)){1,2}\b”);
Matcher m=p.matcher(content);
while(m.find())
System.out.println(m.group());
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 接口与内部类
- js中对象this注意细节
- Django学习5:利用GET方式提交表单
- 记录一个QT+Opencv+Cmake的错误的解决
- 聊聊CentOS的服务
- 正则表达式
- CSU-ACM2017暑期训练3-递推与递归 D-Function Run Fun POJ-1579
- 如何升级python代码版本
- Elasticsearch内存分配设置详解
- hdu-6055-Regular polygon
- 1-3:盒子、浮动
- 用C语言编写猜数字游戏
- html image图片标签
- 水题。。。832A