Java学习路线-20:正则表达式
第10 章 : 正则表达式
38 认识正则表达式
JDK >= 1.4
使用正则方便进行数据验证处理,复杂字符串修改
实现字符串转数字
class Demo {public static boolean isNumber(String temp){char[] chars = temp.toCharArray();for(char c : chars){if(c > '9' || c < '0'){return false;}}return true;}public static void main(String[] args) {String number = "123";if(isNumber(number)){int i = Integer.parseInt(number);System.out.println(i);// 123}}
}
使用正则表达式
String number = "123";
if(number.matches("\\d+")){int i = Integer.parseInt(number);System.out.println(i);// 123
}
39 常用正则标记
1、字符匹配
x 任意字符
\\ \
\n 换行
\t 制表符
2、字符集
[abc] 任意一个
[^abc] 不在其中任意一个
[a-zA-Z] 任意字母
[0-9] 一个数字
3、简化字符集
. 任意一个字符
\d 数字[0-9]
\D 等价于[^0-9]
\s 匹配任意空格,换行,制表符
\S 匹配非空格数据
\w 字母、数字、下划线等价于[a-zA-Z_0-9]
\W 非字母、数字、下划线等价于[^a-zA-Z_0-9]
4、边界匹配
^ 匹配开始
$ 匹配结束
5、数量
? 0次或1次
* 0次、1次或多次
+ 1次或多次
{n} 长度=n次
{n,} 长度>=n次
{n,m} 长度>=n and 长度<=m次
6、逻辑表达式,多个正则
XY X之后是Y
X|Y 或
() 整体描述
String str = "123";
String regex = "\\d+";
System.out.println(str.matches(regex));
// true
40 String类对正则的支持
public boolean matches(String regex)
public String replaceFirst(String regex, String replacement)
public String replaceAll(String regex, String replacement)
public String[] split(String regex)
public String[] split(String regex, int limit)
示例1:删除非字母和非数字
String str = "asfasdfw3414^&*^&%^&wefwerfdc^&*&*fafdasd";
String regex = "[^a-zA-Z0-9]+";
System.out.println(str.replaceAll(regex, ""));
// asfasdfw3414wefwerfdcfafdasd
示例2:数字分隔拆分字符串
String str = "sdasdf123123ffsadfsda232edasf";
String regex = "\\d+";
String[] list = str.split(regex);
for(String s : list){System.out.println(s);
}
/*** sdasdf* ffsadfsda* edasf*/
示例3:判断字符串是否为数字
String str = "10.1";
String regex = "\\d+(\\.\\d+)?";if(str.matches(regex)){System.out.println(Double.parseDouble(str));// 10.1
}
示例4:判断字符串是否为日期
import java.text.ParseException;
import java.text.SimpleDateFormat;class Demo {public static void main(String[] args) throws ParseException {String str = "2019-11-17";String regex = "\\d{4}-\\d{2}-\\d{2}";if (str.matches(regex)) {System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str));// Sun Nov 17 00:00:00 CST 2019}}
}
示例5:判断电话号码
电话号码
51283346 \\d{7,8}
010-51283346 (\\d{3}-)?
(010)51283346 (\(\\d{3}\))?
class Demo {public static void main(String[] args) {String[] numbers = new String[]{"51283346","010-51283346","(010)51283346"};String regex = "((\\d{3}-)|(\\(\\d{3}\\)))?\\d{7,8}";for(String number : numbers){System.out.println(number.matches(regex));}/*** true* true* true*/}
}
示例6:邮箱验证
用户名:数字、字母、下划线(不能开头)
域名:数字、字母、下划线
域名后缀:com、cn、net、com.cn、org
String email = "google@qq.com";
String regex = "[0-9a-zA-Z]\\w+@\\w+\\.(com|cn|net|com.cn|org)";
System.out.println(email.matches(regex));
// true
41 java.util.regex包支持
Pattern 正则表达式编译
private Pattern(String p, int f)
public static Pattern compile(String regex)
Mather 正则匹配
public Matcher matcher(CharSequence input)
public boolean matches()
Pattern示例
import java.text.ParseException;
import java.util.regex.Pattern;class Demo {public static void main(String[] args) throws ParseException {String email = "ooxx12ooxx000ooxx";Pattern pattern = Pattern.compile("\\d+");String[] list = pattern.split(email);for (String s : list) {System.out.println(s);}/*** ooxx* ooxx* ooxx*/}
}
Matcher示例
import java.text.ParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;class Demo {public static void main(String[] args) throws ParseException {String number = "6687";Pattern pattern = Pattern.compile("\\d+");Matcher matcher = pattern.matcher(number);System.out.println(matcher.matches());// true}
}
拆分,替换,匹配使用String类就可以实现
String不具备的功能:
示例:提取sql中的变量名
import java.text.ParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;class Demo {public static void main(String[] args) throws ParseException {String sql = "insert into student(name, age) values(#{name}, #{value})";Pattern pattern = Pattern.compile("#\\{\\w+\\}");Matcher matcher = pattern.matcher(sql);while (matcher.find()){System.out.println(matcher.group(0).replaceAll("#|\\{|\\}", ""));}/*** name* value*/}
}
Java学习路线-20:正则表达式相关推荐
- 十年架构师留下最完整的Java学习路线
原文地址:https://club.dingding.xin/topic/5081/十年架构师留下最完整的java学习路线?code=cb850abbce523c7f886f583d6dc00f5e ...
- 十年架构师留下最完整的Java学习路线,学完年薪40W
文章有点长,请大家耐心看完,话不多说直接上干货! 永不过时的编程语言--Java 编程开发. Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以900万的程序员数 ...
- Java学习星球,Java学习路线
目录 一.Java学习路线 二.学习计划 三.为何会有Java学习星球? 四.加入星球后,你可以得到什么? 五.如何加入Java学习星球? 六.打卡挑战 大家好,我是哪吒,一个靠着热情攀登至C站巅峰的 ...
- 阿里云Java学习路线 - Java编程入门 笔记
学习链接 目录 学习链接 第一章 Java语言介绍 1.Java发展简介 2.Java语言特点 3.Java可移植性 第二章 搭建Java开发环境 1.JDK简介 2.安装完成后配置JDK环境 第三章 ...
- 【最新版】Java学习路线(含B站口碑推荐视频链接)
文章目录 关于如何自学 一.计算机网络 二.数据结构与算法 三.操作系统 四.计算机组成原理 五.编译原理 六.设计模式 七.MySQL 八.实操工具 九.JAVA并发与JVM 十.Redis 十一. ...
- 从入门到精通,Java学习路线导航(附学习资料+持续更新)
引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...
- Java学习路线从入门到入土
Java学习路线从入门到入土 Java学习路线从入门到入土 Java学习路线从入门到入土 简介 Java基础课程 第一阶段 第一部分:Java开发介绍 第二部分:Java数组 第三部分:Java面向对 ...
- 从小白到大神Java学习路线
Java学习路线 第一阶段:JavaSE 1. 第一部分:Java开发介绍 DOS常用命令 JVM.JRE.JDK之间的关系 Java开发环境的搭建:安装JDK,配置环境变量 Java入门程序(Jav ...
- 第1讲 Java学习路线怎么学习Java
第1讲 Java学习路线&怎么学习Java 1 概述 学过一段时间的同学一定会觉得Java学习最头疼的不是语法结构的繁杂,而是Java本身体系结构的庞大.以至于自己不知道接下去该 ...
- java学习路线,一个初中生学java要多久,java难学吗
一门永不过时的编程语言--Java 软件开发 java难学吗 java不难,你可以做如下学习 一.到相应的培训机构付费学习 别在这说培训机构没用什么的,不过一定要找正规的培训机构,不然容易被坑.培训机 ...
最新文章
- pytorch保存模型pth_Day159:模型的保存与加载
- zookeeper单节点部署
- 反编译Android APK详细操作指南
- Python一亿以内的素数个数_Python 计数质数
- 版权所有LIKEWING_柳我借地存个图学习一下
- Ogre1.7的地形、天空与雾
- fiddler限制网速
- 常见电容器图片_工业机器视觉的常见应用与施努卡VisionMax视觉系统介绍
- (5)Redis主从同步原理及详细配置
- Visual Studio 2005超级集成版本下载
- nginx源码编译安装和配置
- access日期如何增加年数_ACCESS 时间日期操作大全
- Tomcat安装及环境配置教程
- SQL 修改表的常用命令
- RabbitMQ:消息模型
- [XJTU计算机网络安全与管理]——第十三讲 攻击与病毒
- FPGA中的LUT LUTRAM BRAM DSP FF
- 1 大奇迹 - 遥感 - 改变世界的技术
- 【IT运维小知识】安全组是什么意思?
- springboot整合redis之用户手机验证码注册登录
热门文章
- chrome+链接android手机,为什么android手机限制chrome浏览器数据连接还可以上网
- cisco ASA 防火墙安全算法原理和基本配置(转自http://xiaoxiao1001.blog.51cto.com/7640562/1300161)
- 内功修炼之lodash——chunk、zip、groupBy、invokeMap方法
- Zencart模板结构和设计详解
- Mac工具 shimo 无法正常使用(macOS 系统版本问题)
- 【Java从零到架构师第③季】【项目实战】驾考管理系统
- 50多款Android运用法式遭Rootkit病毒侵扰进犯
- C#Form窗体模仿PhotoShop软件,高仿真原PS界面,实现PS对图片基本操作、拍照等,计算机图形学相关
- 计算机的垃圾站是在硬盘,电脑垃圾回收站在哪里
- TypeScript——理解 infer 关键字!