牛客网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是一次添加一对元素. ...
随机推荐
- OpenCv-Python 图像处理基本操作
1. 图片加载.显示和保存 import cv2 img = cv2.imread("01.jpg") imgGrey = cv2.imread("01.jpg" ...
- HihoCoder1677 : 翻转字符串(Splay)(区间翻转)
描述 给定一个字符串S,小Hi希望对S进行K次翻转操作. 每次翻转小Hi会指定两个整数Li和Ri,表示要将S[Li..Ri]进行翻转.(S下标从0开始,即S[0]是第一个字母) 例如对于S=" ...
- AtCoder Grand Contest #026 A - Colorful Slimes 2
Time Limit: 2 sec / Memory Limit: 1024 MB Score : 200200 points Problem Statement Takahashi lives in ...
- MySQL当月汇总 及负毛利汇总_20161027
#当月汇总 及负毛利汇总 SELECT e.ID,e.city AS 城市 ,f.当月销售总额,f.当月成本总额,f.当月毛利总额,f.当月优惠券总额,f.当月赠品总额,f.当月毛利总额-f.当月优惠 ...
- 【Lintcode】104.Merge k Sorted Lists
题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- 关于redis,学会这8点就够了
1,redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队 ...
- 洛谷P1525关押罪犯——二分做法
题目:https://www.luogu.org/problemnew/show/P1525 二分答案,二分图染色判断是否可行. 代码如下: #include<iostream> #inc ...
- 洛谷P1941飞扬的小鸟——细节DP
题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...
- 基于Html5的移动端APP开发框架
快速增长的APP应用软件市场,以及智能手机的普及,手机应用:Native(原生)APP快速占领了APP市场,成为了APP开发的主流,但其平台的不通用性,开发成本高,多版本开发等问题,一直困扰着专业AP ...
- 人工智能实践:TensorFlow 框架
张量.计算图.会话 基本概念 基于Tensorflow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型. 张量(Tensor):张量就是多维数组(列表) ...