【java学习笔记】正则表达式
一.正则表达式
1.预定义字符集
| . | 表示任意一个字符 |
| \d | 表示任意一个数字 |
| \w | 表示任意一个单词字符(只能是数字、字母、下划线) |
| \s | 表示任意一个空白字符(\t\r\n\f\x0B) |
| \D | 表示任意一个非数字字符 |
| \W | 表示任意一个非单词字符 |
| \S | 表示任意一个非空 |
| \. | 表示. |
2.字符集合[]
| 正则表达式 | 说明 |
| [] | 一个字符 |
| [ace] | a c e中任意一个字符 |
| [^] | 除了某个字符 |
| [^ace] | 除了a c e的任意字符 |
| [a-z] | a、b、c……z中的任意一个字符 |
| [a-zA-Z0-9] | a-z、A-Z、0-9中任意一个字符 |
| [a-z&&[^bc]] | a-z中除了bc以外的任意一个字符 |
3.数量词
| 正则表达式 | 说明 |
| A? | 表示0个或1个A |
| A* | 表示0或任意多个 |
| A+ | 表示连续出现>=1次 |
| A{n} | n个A |
| X{n,} | >=n个A |
| X{n,m} | 表示n到m个A |
4.分组()
() 可以将内容看做一个整体。()中可以使用"|"来表示或关系。
例:(ABC){3} ABCABCABC
(ABC|DEF){3} 可以是DEFABCABC、ABCDEFABC、ABCABCDEF、ABCDEFDEF、DEFABCDEF、DEFDEFABC、DEFDEFDEF其一。
5.边界符
通过在正则表达式的开始添加"^"以及末尾添加"$"来表示一个整体。若不使用它们,那么正则表达式只匹配某个字符串的部分内容是否符合格式规则,但使用它们,则要求字符串必须从头到尾都满足该格式规则。
不加:(ABC){3} 123ABCABCABC123231同样符合。
加^ :^(ABC){3} ABCABCABC123231符合。123ABCABCABC不符合。
加$ :(ABC){3}$ 123ABCABCABC符合。 ABCABCABC123231不符合。
加^$:^(ABC){3}$ 必须是ABCABCABC才符合。
【在java中,^$写与不写效果相同,在其他语言中未必如此。】
二.java中String正则表达式相关的API
1.matches
matches()方法的参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串格式规则来匹配当前字符串,若满足那么该方法返回true。否则返回false。
import java.util.Scanner;
/**
* 使用给定的正则表达式验证当前字符串是否满足该格式要求.
* boolean matches(String regex)
* 在java字符串中,正则表达式的\,需用\\转义。
* 例如:正则表达式\\,在java字符串中应为\\\\。
*/
public class String_matches {
public static void main(String[] args) {
System.out.println("请输入您的邮箱地址:");
Scanner in = new Scanner(System.in);
String mail = in.nextLine(); //邮箱的正则表达式:[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z]+)+
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+";
System.out.println(regex); boolean match = mail.matches(regex);
if(match){
System.out.println("是邮箱");
}else{
System.out.println("不是邮箱");
}
in.close();
}
}
boolean matches(String regex)
2.split
String[] split(String regex):参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并按照满足的部分将字符串拆分。
/**
* 将当前字符串按照给定的正则表达式匹配的部分进行拆分.
* String[] split(String regex)
*/
public class String_split {
public static void main(String[] args) {
String str = "0abc123def456ghi789jkl99";
/*
* 按照数字部分进行拆分,得到所有的字母部分
*/
String[] data = str.split("[0-9]+");
System.out.println(data.length);
for(int i=0;i<data.length;i++){
System.out.println(data[i]);
}
}
}
//0之前会返回一个空字符串,而99后面的空字符串自动被省略。
//末尾的连续空字符串会被自动省略。
String[] split(String regex)
3.replaceAll
String replaceAll(String regex,String replacement):参数要求传入一个用字符串描述的正则表达式和一个需要替换的字符串,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并将满足的部分替换为需要替换的这个字符串。
/**
* 将当前字符串中满足正则表达式的部分替换为给定的字符串.
* String replaceAll(String regex,String str)
*/
public class String_replaceAll {
public static void main(String[] args) {
//将数字部分替换为"#NUMBER#"
String str = "abc123def456ghi789jk";
//正则表达式:\d+
str = str.replaceAll("\\d+", "#NUMBER#");
System.out.println(str);
}
}
String replaceAll(String regex,String str)
【java学习笔记】正则表达式的更多相关文章
- JAVA学习笔记--正则表达式
正则表达式是一种强大而灵活的文本处理工具.使用正则表达式,可以让我们以编程的方式构造复杂的文本,并对输入的字符串进行搜索. 一.基础正则表达式语法(表格来自J2SE6_API) 字符 x 字符 x \ ...
- Java 学习笔记 正则表达式
2019.3.27 正则表达式 \w 单词字符,匹配[]a-zA-Z_0-9] \w{3} 表示匹配3个字符()ab8,abc,a_c,a5_...) \w+ 至少一个,1到多个 \w* 0个到n个 ...
- java学习笔记——正则表达式
NO 方法名称 类型 描述 1 public boolean matches(String regex) 普通 正则验证使用 2 public String replaceAll(String reg ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记06--正则表达式
java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...
- 20155234 2610-2017-2第九周《Java学习笔记》学习总结
20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...
- Java学习笔记之---API的应用
Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...
- Java学习笔记【一、环境搭建】
今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- shell获取字符串长度
方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 代码如下: echo "abc& ...
- Log4Net记录到MySql
1.新建控制台程序. 2.添加Log4Net nuget 3.添加MySql 引用 4.添加配置文件如下: <?xml version="1.0"?> <conf ...
- DG环境的日常巡检
DG环境的日常巡检 目录 1.DG环境的日常巡检4 1.1.主库环境检查4 1.1.1.主库实例启动状态检查4 1.1.2.主库启动模式检查4 1.1.3.主库DG环境的保护模式检查4 1.1.4.主 ...
- IIS 加载 JSON 错误 404 解决办法
MIME设置:在IIS的站点属性的HTTP头设置里,选MIME 映射中点击”文件类型”-”新类型”,添加一个文件类型:关联扩展名:*.json内容类型(MIME):application/x-java ...
- vue中如何获取后台数据
原文链接:http://blog.csdn.net/vergilgeekopen/article/details/68954940 需要引用vue-resource 安装请参考https://gith ...
- 洛谷 [p1439] 最长公共子序列 (NlogN)
可以发现只有当两个序列中都没有重复元素时(1-n的排列)此种优化才是高效的,不然可能很不稳定. 求a[] 与b[]中的LCS 通过记录lis[i]表示a[i]在b[]中的位置,将LCS问题转化为最长上 ...
- BZOJ 3270: 博物馆 [概率DP 高斯消元]
http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...
- 除了使用URLSearchParams处理axios发送的数据,但是兼容性不好,其他的兼容方法
在使用axios这个ajax插件的时候,我们有些时候会遇到一些问题,比如:数据格式不正确 以最简单的例子为基础(这里使用post方法): 在上面的例子中我们直接调用axios的post方法,传给后台的 ...
- IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子
很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量 ...
- 【ASP.NET Core】处理异常(上篇)
依照老周的良好作风,开始之前先说点题外话. 前面的博文中,老周介绍过自定义 MVC 视图的搜索路径,即向 ViewLocationFormats 列表添加相应的内容,其实,对 Razor Page 模 ...