一、基本概念

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

比如:

  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. [BZOJ1935][SHOI2007]Tree 园丁的烦恼(树状数组)

    题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思 ...

  2. jquery源码解析:pushStack,end,ready,eq详解

    上一篇主要讲解了jQuery原型中最重要的方法init.接下来再讲一些比较常用的原型方法和属性 core_slice = [].slice, jQuery.fn = jQuery.prototype ...

  3. python爬虫之爬取糗事百科并将爬取内容保存至Excel中

    本篇博文为使用python爬虫爬取糗事百科content并将爬取内容存入excel中保存·. 实验环境:Windows10   代码编辑工具:pycharm 使用selenium(自动化测试工具)+p ...

  4. 一次http请求响应流程

    前端客户端 发起http请求 web服务器接收并解析http报文 通过WSGI协议发送给web框架 web框架创建请求对象 中间层处理 具体的视图处理-业务处理 中间层处理 创建http响应对象 返回 ...

  5. css加载顺序

    最近发现个有意思的事情,印象中的是css中class后面会覆盖前面的, 于是写了代码 div{ width: 100px; height: 100px; } .red{ background-colo ...

  6. 小蒟蒻的垃圾emacs配置

    (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C-s&q ...

  7. 128th LeetCode Weekly Contest Capacity To Ship Packages Within D Days

    A conveyor belt has packages that must be shipped from one port to another within D days. The i-th p ...

  8. dedicated bearer

    Session Initiation Protocol (SIP) Basic Call Flow ExamplesRFC3665 intuitive,   done. PDF] TS 123 401 ...

  9. 学习python 3 入门知识

    1.安装 http://www.runoob.com/python3/python3-install.html https://www.python.org/ 2.使用 工具一:IDLE IDLE 是 ...

  10. redis cluster 部署过程

    一, 特点 高性能: 1.在多分片节点中,将16384个槽位,均匀分布到多个分片节点中 2.存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16383之间) 3.根 ...