一、基本概念

在项目中我们经常性做的一件事是“匹配”字符串

比如:

  1、我们要验证用户输入的手机号是否合法?

  2、验证设置的密码是否符合规则?

  3、或者替换指定字符串中的一些内容。

这么一看,似乎正则表达式就是在查找、处理字符串。

二、如何使用

1、首先,我们需要定义一个模板(Pattern),这个模板描述了需要匹配的字符串的规则,这就是正则表达式。

2、模板有了,我们需要将要匹配的内容和模板一起创建一个匹配器(Matcher)。

3、最后执行匹配获得返回的结果。

按照以上的步骤,我们写一个简单的示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* @author lay
* @date 2018/4/10.
* @time 17:19
*/
public class RegexDemo {
public static void main(String[] args) {
// 写一个正则模板
Pattern pattern = Pattern.compile("name");
// 获取一个匹配器
Matcher matcher = pattern.matcher("name");
// 执行操作
boolean isMatch = matcher.matches();
// 打印结果
System.out.println("isMatch=" + isMatch);
}
}

在这个示例中:

1、我们使用Pattern类提供的方法compile()编译出正则表达式"name",返回一个Pattern模板类;

2、通过pattern模板类的matcher()方法获取匹配器,传入待处理的内容"name";

3、匹配器调用方法matches()返回匹配结果。

4、最后打印结果为:isMatch=true

三、学习内容

由以上的示例,我们可以了解到,对于Java的正则表达式我们需要学得的内容有:

1、正则表达式如何写;

2、Pattern类的使用;

3、Matcher类的使用;

四、正则表达式如何写;

在查看API文档的时候,介绍正则表达式语法的是这样的:\d 表示数字,\s表示空白字符

那问题在于,我们使用Pattern类的complie()方法来创建模板,而compile()方法需要传入的是一个字符串,例如:

Pattern pattern = Pattern.compile("name");

这样的话我们要怎么写正则表达式语法呢?如下:

Pattern pattern = Pattern.compile("\\d");

我们看到,这里使用了 "\\d" 而不是语法说的 "\d"。我们可以这样理解:在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

例如:

\d -> \\d

\s -> \\s

\w -> \\w

正则表达式的语法可以参考:

1、http://www.runoob.com/java/java-regular-expressions.html

2、http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

五、Pattern类和Matcher类的使用

前面我们说了,pattern类是为了编译模板,matcher用于构建匹配器。其实就是示例化类,然后调用类的方法。比如:

1、匹配是否有某个字符串:boolean isMatched = matcher.matches();

2、替换字符串:String newStr = matcher.replaceAll("替换的内容");

六、总结

正则表达式即是为了匹配处理字符串而出现的,我们要做的即:

1、构造模板;2、构造匹配器;3、使用匹配器提供的方法处理字符串;

Java API 之 正则表达式的更多相关文章

  1. 详解Java API之正则表达式

    正则表达式描述的是一种规则,符合这种限定规则的字符串我们认为它某种满足条件的,是我们所需的.在正则表达式中,主要有两种字符,一种描述的是普通的字符,另一种描述的是元字符.其中元字符是整个正则表达式的核 ...

  2. Java API 快速速查宝典

    Java API 快速速查宝典 作者:明日科技,陈丹丹,李银龙,王国辉 著 出版社:人民邮电出版社 出版时间:2012年5月 Java编程的最基本要素是方法.属性和事件,掌握这些要素,就掌握了解决实际 ...

  3. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  4. Elasticsearch 2.3.3 JAVA api说明文档

    原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...

  5. Java API 各个包的内容解释

    java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类. java.awt 包含用于创建用户界面和绘制图形图像的所有类. java.awt. ...

  6. 【java 正则表达式】记录所有在java中使用正则表达式的情况

    本篇记录在java中邂逅正则表达式的所有美丽瞬间.因为在java和js中正则表达式的语法并不一致. 1.匹配字符串中有出现[2.1开头或者&2.1或者&3.1等的] Pattern m ...

  7. JAX-RS介绍——Java API forRESTful WebServices,JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目标则是Web应用开发

    JAX-RS Java API forRESTful WebServices旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架.是一个J ...

  8. Elastic Stack 笔记(八)Elasticsearch5.6 Java API

    博客地址:http://www.moonxy.com 一.前言 Elasticsearch 底层依赖于 Lucene 库,而 Lucene 库完全是 Java 编写的,前面的文章都是发送的 RESTf ...

  9. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

随机推荐

  1. python index()函数

    python内置index()函数 index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python ...

  2. 【SSO单点系列】开篇

    年底将至,忙碌了好几个月的项目也接近尾声了.在这个项目中,由于要和其他外系统做单点登录(SSO),整合其他系统的功能.在网上查询了相关资料后,最终选取了Yale大学发起的一个开源项目 CAS, 作为项 ...

  3. 恢复 MSSQL bak 文件扩展名数据(上)

    恢复 MSSQL bak 文件扩展名数据 一.概念: Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQL Server 2016,已经在2016年6 ...

  4. Docker部署常见问题

    一.删除容器和镜像 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像. 停止容器 # docker stop $(docker ps ...

  5. Cors Http 访问控制

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

  6. java操作html格式数据

    近期在做数据抓取功能,抓取到的数据为html格式,需在后台进行转换后取值,为了避免使用字符串查找方式获取而使用Jsonp完美实现. 1. 引入Jsonp: <dependency> < ...

  7. C#集合之位数组

    如果需要处理的数字有许多位,就可以使用BitArray类和BitVector32结构.BitArray类位于System.Collection,BitVector32结构位于System.Collec ...

  8. java中如何把图片转换成二进制流的代码

    在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...

  9. 【爬虫】-爬取猫眼TOP100

    原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...

  10. (转)[InnoDB系列] -- SHOW INNODB STATUS 探秘

    原文:http://imysql.cn/2008_05_22_walk_through_show_innodb_status 很多人让我来阐述一下 SHOW INNODB STATUS 的输出信息, ...