牛客网Java刷题知识点之正则表达式(Matcher、Pattern)
不多说,直接上干货!
正则表达式是什么?
正则表达式是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z) 以及特殊字符(元字符) 组成的文字模式, 它用以描述在查找文字主体时需要匹配的一个或多个字符串。 正则表达式作为一个模板, 将某个字符模式与所搜索的字符串进行匹配 。
自从jdk1.4推出java.util.regex包, 为我们提供了很好的Java正则表达式应用平台。
Pattern和Matcher
Pattern类, 里面列出了全部的正则表达式内容。
1、逻辑运算符:
|:管道符.如:x|y表示x或y
():捕获组.(abc)|(xyz)表示abc或xyz
2、边界匹配符:
^:从头匹配
$:从尾匹配


RegexDemo.java
package zhouls.java.demo.regex; import java.util.regex.Matcher;//正则表达式
import java.util.regex.Pattern; public class RegexDemo { /*
* 主函数
*/
public static void main(String[] args) {
//判断一个字符串是否是由纯数字组成的
String s = "";
boolean flag = method02(s); if(flag){
System.out.println("字符串是由纯数字组成的");
}else{
System.out.println("字符串不是由纯数字组成的");
}
} /**
* 使用正则表达式来判断
* @param s
* @return
*/
public static boolean method02(String s) {
/*Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher(s);
if(matcher.matches()){
return true;
}*/
if(Pattern.compile("[0-9]+").matcher(s).matches()){
return true;
}
return false;
} /**
* 取字符判断
* @param s
* @return
*/
public static boolean method01(String s) {
char[] chs = s.toCharArray();
boolean flag = true; for(char c : chs){
if(c < '' || c > ''){
flag = false;
break;
}
}
return flag;
}
}

RegexDemo02.scala
package zhouls.java.demo.regex; import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class RegexDemo02 { /*
* 主函数
*/
public static void main(String[] args) {
//method01(); //method02(); //method03();
boolean flag = "2017-07-15".matches("\\d{4}-\\d{2}-\\d{2}");
System.out.println("字符串日期是否合法:"+flag); String[] arr = "abc12abc123abc1234abc".split("\\d+");
System.out.println(Arrays.toString(arr)); String ss = "abc12abc123abc1234abc".replaceAll("\\d+", "_");
System.out.println(ss);
} /**
* 替换
*/
public static void method03() {
String s = "abc12abc123abc1234abc";
String regex = "\\d+";
String ss = Pattern.compile(regex).matcher(s).replaceAll("_");
System.out.println(ss);
} /**
* 根据正则表达式进行拆分
*/
public static void method02() {
String s = "abc12abc123abc1234abc";
String regex = "\\d+";
String[] arr = Pattern.compile(regex).split(s);
System.out.println(Arrays.toString(arr));
} /**
* 判断是否匹配
*/
public static void method01() {
//验证字符串是否是指定的格式
String s = "2017-07-15";
String regex = "\\d{4}-\\d{2}-\\d{2}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(s);
if(matcher.matches()){
System.out.println("字符串日期合法");
}else{
System.out.println("字符串日期不合法");
}
}
}

牛客网Java刷题知识点之正则表达式(Matcher、Pattern)的更多相关文章
- 牛客网Java刷题知识点之为什么HashMap和HashSet区别
不多说,直接上干货! HashMap 和 HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...
- 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类
不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...
- 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
随机推荐
- Python: scikit-image canny 边缘检测
这个用例说明canny 边缘检测的用法 import numpy as np import matplotlib.pyplot as plt from scipy import ndimage as ...
- [Shell]grep命令
我是好文章的搬运工,原文来自ChinaUnix,博主scq2099yt,地址:http://blog.chinaunix.net/uid-22312037-id-4217835.html 一.基本用法 ...
- WPF Background的设置有坑
今天帮忙同事解决在后台绑定时,动态更改控件(Grid)的Background. 有个陷阱,C#有2个命名空间有Brush和Color, 分别为System.Drawing和System.Window. ...
- mysql的itcast笔记
1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...
- windows平台下新网络库RIO ( Winsock high-speed networking Registered I/O)
What's New for Windows Sockets Microsoft Windows 8 and Windows Server 2012 introduce new Windows Soc ...
- Modbus通讯协议学习 - 认识篇
转自:http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html 什么是Modbus? Modbus 协议是应用于电子控制器上的一种 ...
- Source insight 支持汇编
把uboot代码添加到SI的项目里面,打开*.S的文件的时候,发现还是黑白色的,感觉很不舒服,我使用的SI的版本是: ver 3.50,通过百度,找到了解决的办法,方法如下: 1:想让*.s 或者 * ...
- iview组件DatePicker type="datetimerange绑定初始默认时间值
使用::value="[this.startTime,this.endTime]",绑定当天时间 如下: <DatePicker type="datetimeran ...
- synchronized用法详解
1.介绍 Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码.当两个并发线程访问同一个对象object中的这个加锁同步代 ...
- oracle 查询及删除重复记录的SQL语句
查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group ...