一.正则表达式

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学习笔记】正则表达式的更多相关文章

  1. JAVA学习笔记--正则表达式

    正则表达式是一种强大而灵活的文本处理工具.使用正则表达式,可以让我们以编程的方式构造复杂的文本,并对输入的字符串进行搜索. 一.基础正则表达式语法(表格来自J2SE6_API) 字符 x 字符 x \ ...

  2. Java 学习笔记 正则表达式

    2019.3.27 正则表达式 \w 单词字符,匹配[]a-zA-Z_0-9] \w{3} 表示匹配3个字符()ab8,abc,a_c,a5_...) \w+ 至少一个,1到多个 \w* 0个到n个 ...

  3. java学习笔记——正则表达式

    NO 方法名称 类型 描述 1 public boolean matches(String regex) 普通 正则验证使用 2 public String replaceAll(String reg ...

  4. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  5. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  6. java学习笔记06--正则表达式

    java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...

  7. 20155234 2610-2017-2第九周《Java学习笔记》学习总结

    20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...

  8. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

  9. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

  10. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

随机推荐

  1. Java 线程和多线程执行过程分析

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. 【视频编解码·学习笔记】5. NAL Unit 结构分析

    在上篇笔记中通过一个小程序,可以提取NAL Unit所包含的的字节数据.H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用.下面将对NAL Unit中的数据进行 ...

  3. 初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)

    初码Azure系列文章目录 将消息队列技术模型简化,并打造成更适合互联网+与敏捷开发的云服务模式,好像已经是行业趋势,阿里云也在推荐使用消息服务(HTTP协议为主)而来替代消息队列(TCP协议.MQT ...

  4. C# Sap Rfc 连接代码实例

    根据不同的需求,安装不同位数的 Rfc SDK 1.构造 Sap Adress Information,且继承 IDestinationConfiguration public class SapAd ...

  5. wpf动画同步闪烁

    public class BlinkAnimation : Animatable { /// <summary> /// 单例,保持所有闪烁的动画同步 /// </summary&g ...

  6. SAP字符串处理

    拼接字符串 CONCATENATE t1 t2 INTO result. "直接拼接 CONCATENATE t1 t2 INTO result SEPARATED BY space. &q ...

  7. 配置apache使之支持浏览器端的缓存

    当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求. 一 ...

  8. ansible基础及使用示例

    1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...

  9. iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)

    生成二维码图片也是项目中常用到的,二维码的扫描Git上有很多好用的,这里主要说下二维码的生成 1.普通二维码 方法 /** 生成二维码 QRStering:字符串 imageFloat:二维码图片大小 ...

  10. radare2逆向笔记

    最近刚开始学习逆向(Reverse Engineering), 发现其学习曲线也是挺陡峭的, 而网上的 许多writeup文章主旨总结就六个字:"你们看我屌吗?" ...几近炫技而 ...