牛客网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是一次添加一对元素. ...
随机推荐
- leetcode 303. Range Sum Query - Immutable(前缀和)
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
- storm--chuanzhiboke
Storm里面有7种类型的stream grouping 1. Shuffle Grouping: 随机分组, 随机派发stream里面的tuple,保证每个bolt接收到的tuple数目大致相同. ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Grunt:常见错误
ylbtech-Grunt:常见错误 1.返回顶部 1. D:\lab6\DS.JZB.Web>grunt build Running "clean:dist" (clean ...
- cassandra根据用户名密码登录cqlsh
修改conf目录下cassandra.yaml文件 authenticator: PasswordAuthenticator //将authenticator修改为PasswordAuthentic ...
- java去任意范围的随机数
一.java.uitl.Randomrandom.nextInt(20),任意取[0,20)之间整数,其中0可以取到,20取不到 二.取某个范围的任意数public static String get ...
- HDU-5974
A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- c# 鼠标点击控件即拖动窗体
在编程中,有时打开的窗体没有边框,但是我们仍然想在鼠标放在窗体上就能拖动窗体,这样我们只需要以窗体中的一个控件为参考,我们在这里以panel为例子: public class PanelNew : P ...
- 「一入 Java 深似海 」系列课程
第一期 「一入 Java 深似海 」系列课程 - 第一期 第一节:Java 语言基础
- 4.xpath注入详解
0x01 简介 XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在 URL.表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息.XPath注入发 ...