牛客网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是一次添加一对元素. ...
随机推荐
- tomcat 6.0 安装及配置
前提:安装并配置好jdk 1.免安装版存放目录:D:\01Install\tomcat
- css书写规则
无规矩不成方圆,不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的 不要在自闭合(self-closing)元素的尾部添加斜线 不要省略可选的结束标签(closing tag)(例 ...
- Posix线程编程指南(1)
这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第一篇将向您讲述线程的创建与取消. 一.线程创建 1.1 线程与进程相对进程而言,线程是一 ...
- BZOJ_3165_[Heoi2013]Segment_线段树
BZOJ_3165_[Heoi2013]Segment_线段树 Description 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段.记第i条被插入的线段的标号为i. 2.给定一个数 ...
- 【Python】String 字符串
1. split() split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 split()方法语法:str.split(str="" ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- BZOJ3127:[USACO2013OPEN]Yin and Yang
浅谈树分治:https://www.cnblogs.com/AKMer/p/10014803.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem. ...
- C# Json库 和 xml 序列化反序列化 存在的问题
json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法: 声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...
- POJ2481(树状数组:统计数字 出现个数)
Cows Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 15405 Accepted: 5133 Description ...
- 虚拟机ubuntu和windows共享文件
设置虚拟机ubuntu和windows共享文件(方便复制文件到本机) (需要安装samba) 登陆ubuntu系统后,点击左边的文件夹.右击新建个文件夹. 设置为共享 ubuntu会提示你 ...