正则表达式举例说明
来源:互联网 发布:qq关系数据库 编辑:程序博客网 时间:2024/05/17 08:46
/* * 需求:校验qq号 * 要求:长度5-15;只能是数字;0不能开头 */ public static void checkQQ(String qq){ int length=qq.length(); if(length>=5&&length<=15){ if (!qq.startsWith("0")) { try { Long l=Long.parseLong(qq); System.out.println("正确!"); } catch (NumberFormatException e) { System.out.println(qq+":不是数字错误!"); } }else { System.out.println(qq+":0开头错误!"); } }else { System.out.println(qq+":长度错误!"); } }
在正则表达式面前,它显然有些麻烦,但是它还是有优点就是易读,很容易看懂代码意思。
使用正则表达式,代码就变成了
public static void checkQQByRegex(String qq){ String regex="[1-9][0-9]{4,14}"; boolean b=qq.matches(regex); System.out.println(qq+":"+b); }
简单的正则表达式,却不容易读懂,因此我们需要记很多符号代表的意思。
二、一些常用需要记忆的符号
三、常用功能
1、匹配:其实就是String类中matches方法
/* * 匹配功能 * 需求:校验手机号 * 要求:11位,开头13、15、18 */ public static void fun1() { String phone="13511110000"; String regex="1[358]\\d{9}";//等同于String regex="1[358][0-9]{9}" boolean b=phone.matches(regex); System.out.println(phone+":"+b); }
2、替换:其实就是String类中replaceAll方法,不是replace方法
/* * 替换功能 * 需求:将已知电话号码,替换成形如152****0000 */ public static void fun3() { String phone="15200001111"; String newPhone=phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");//$1取前一个表达式中第一组 System.out.println(newPhone); }
3、切割:其实就是String类中split方法
/* * 切割功能 * 需求:从字符串叠词部分切割 */ public static void fun2() { String s="张三@@@李四aaa王五"; String regex="(.)\\1+";//.任意字符,()组,\1取第一组,+至少出现一次 String strs[]=s.split(regex); for (String string : strs) { System.out.println(string); } }
4、获取:为了String类方便提供了上面方法,其实底层都是使用了Pattern类
/* * 获取功能 * 需求:获取“da jia hao,wo shi zhang san!”中三个字母组成的字符串 */ public static void fun4() { String s="da jia hao,wo shi zhang san!"; String regex="\\b[a-z]{3}\\b";//单词边界\b Pattern p=Pattern.compile(regex);//将正则封装成对象 Matcher m=p.matcher(s);//绑定字符串获取匹配器 //使用匹配器的find方法 while (m.find()) {//find 方法扫描输入序列以查找与该模式匹配的下一个子序列。 System.out.println(m.group());//返回由以前匹配操作所匹配的输入子序列。 } }
四、练习
1、治口吃
/* * 需求:治口吃 */ public static void kouchi() { String s="我我我我....要要要要要要...学学..加..瓦!"; //第一步替换... String s2=s.replaceAll("\\.+", ""); //第二部替换叠词 String s3=s2.replaceAll("(.)\\1+", "$1"); System.out.println(s3); }
2、对ip地址排序
/* * 需求:对ip地址进行排序 */ public static void ipSort() { String s="192.168.0.1 127.0.0.1 133.1.1.1 88.0.192.1"; Set<String> set=new TreeSet<String>();//使用treeset排序的功能 //截取字符串,放入set中,因为字符长度不同,所以排序失败,所以需要补0 s=s.replaceAll("(\\d+)", "00$1");//00127.000.000.001 //保留3位数 s=s.replaceAll("\\d+(\\d{3})", "$1");//088.000.192.001 String strs[]=s.split(" +"); for (String string : strs) { set.add(string); } for (String str : set) { //去除0打头和两位0 str=str.replaceAll("0{1,2}(\\d+)", "$1"); System.out.println(str); } }
3、对邮箱进行校验
/* * 邮箱地址校验 */ public static void checkMail() { String mail="zhangsan@sina.com.cn"; String regex="\\w+@\\w+(\\.\\w+)+"; boolean b=mail.matches(regex); System.out.println(mail+":"+b); }
4、网页爬虫获取邮箱
/* * 网页爬虫获取邮箱 */ public static List<String> getMail(String addr) throws Exception { URL url=new URL(addr); BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));//获取输入流 Pattern p=Pattern.compile("\\w+@\\w+(\\.\\w+)+");//封装 Matcher m=null; String s=null; List<String> mails=new ArrayList<String>(); while ((s=br.readLine())!=null) { m=p.matcher(s);//绑定字符串 while (m.find()) { mails.add(m.group()); } } return mails; }
阅读全文
0 0
- 正则表达式举例说明
- 常用正则表达式符号举例说明
- 举例说明如何使用正则表达式去掉字符串中的一些特殊符号
- 举例说明在android中使用正则表达式去掉字符串中标点符号及其他一些特殊符号的方法
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 如何修改tomcat的端口号 | 让本地也能跑多个tomcat
- Android Studio 常用快捷键
- 腾讯云对象存储——Node.js SDK
- 总帐科目的批量传输与复制
- Android的自定义View的坐标系
- 正则表达式举例说明
- vim精简版
- asp基础2012
- 1007. 素数对猜想 (20)
- 如何给自己开发的产品定位
- 经典SQL语句大全(技巧篇)
- mysql
- C++中模板类list常用示例
- BAT批处理中choice的使用示例