迅速上手:在其他语言中会使用正则表达式请参考如下代码示例
Pattern p = Pattern.compile("需要匹配的正则表达式");
Matcher m = p.matcher("需要匹配的文本");
while(m.find()){ //寻找下一个匹配的子文本String s = m.group(); //提取System.out.println(s); //输出
}
如不会,以下是详细介绍

一、正则表达式及其语法

正则表达式是文本匹配的一种方法。
一些常用的语法如下:

条件

. - 匹配除换行符以外的所有字符。
\d,\w,\s - 匹配数字、字符、空格。
\D,\W,\S - 匹配非数字、非字符、非空格。
我iHIT - 匹配 我iHIT 整个字符串。
[我Hit] - 匹配 我、H、i、t 中的一个字符。
[a-z] - 匹配 a 到 z 中的一个字母。
[^a我c] - 匹配除了 a、我、c 的其他一个字符。
HIT|hit - 匹配 HIT 或 hit。

通配符

加在条件后方,限制条件的匹配次数。
? - 重复 0 次或 1 次。\n* - 重复 0 次或多次。
+ - 重复 1 次或多次。
{n} - 重复 n次。
{n,} - 重复 n次以上。
{m,n} - 重复最少 m 次,最多 n 次。

示例

HIT.*学院 - 匹配任意同时顺次存在HIT和学院的文本。
20[0-9]{2}年 - 匹配包含2000年~2099年任意之一的文本。

在线测试

一款很好用的在线测试工具:https://c.runoob.com/front-end/854/

二、Java中使用正则表达式

2.1 java.util.regex

import java.util.regex.Matcher; //正则表达式匹配器
import java.util.regex.Pattern; //正则表达式的对象

2.2 判断文本能否全匹配

String.matches("需要匹配的正则表达式");

返回能否被给出的正则表达式全匹配,即没有多余字符。

示例

本示例展示一个投票系统的选项及对应值的生成。
用户输入一个符合形如:“选项1”(数值1)|“选项2”(数值2)|… 的文本,可以生成这样的选项:

  • 选项1 (其值为数值1)
  • 选项2 (其值为数值2)

如何生成将在2.3节中叙述。
此处我们先判断用户输入的字符串是否合法(符合形如上述要求的字符串):

String str = "“支持”(1)|“反对”(-1)|“弃权”(0)";
String regexp = "(“.*?”\\(-?\\d\\)\\|)*(“.*?”\\(-?\\d\\))";
str.matches(regexp); //true
str = "sadhkjasdkh";
str.matches(regexp); //false

2.3 获得匹配的字符串文本

光看能否匹配没有什么用,我们最好还能将其中匹配的部分提取出来,此部分介绍从匹配文本中提取目标文本的方法。
比如提取例子中的选项名“支持”和选项值“1”。

1、使用Pattern类的静态方法创建正则表达式对象
Pattern p = Pattern.compile("需要匹配的正则表达式");
2、创建匹配器对象
Matcher m = p.matcher("需要匹配的文本");
3、使用匹配器对象
while(m.find()){ //寻找下一个匹配的子文本String s = m.group(); //提取System.out.println(s); //输出
}
示例

仍然使用2.2节投票系统的例子。
其中 options 是一个 Map,其键为选项名,值为选项值。

     //传入的字符串为var str = "“支持”(1)|“反对”(-1)|“弃权”(0)";var options = new HashMap<String, Integer>();// 创建 Pattern 对象//     用于匹配 “支持”(1)Pattern r = Pattern.compile("(“.*?”\\(-?\\d\\)\\|?)");//         用于匹配 “支持”Pattern rp = Pattern.compile("“.*?”");//        用于匹配 (1)Pattern rv = Pattern.compile("\\(-?\\d\\)");//       用于匹配 1Pattern ri = Pattern.compile("-?\\d");// 创建 matcher 对象Matcher m = r.matcher(str);while(m.find()) {var s = m.group(); // “支持”(1)var mp = rp.matcher(s);mp.find();var opt = mp.group(); //“支持”opt = opt.substring(1, opt.length()-1); //支持var vacm = rv.matcher(s);vacm.find();var valm = ri.matcher(vacm.group()); // (1)valm.find();var val = Integer.parseInt(valm.group()); //1options.put(opt, val);}return options;

得到的options的结果为:

  • 支持 (其值为1)
  • 弃权 (其值为0)
  • 反对 (其值为-1)

Java中使用正则表达式相关推荐

  1. java js 正则表达式_如何在JavaScript与Java中使用正则表达式

    如何在JavaScript与Java中使用正则表达式 发布时间:2021-02-11 13:16:01 来源:亿速云 阅读:69 作者:Leah 如何在JavaScript与Java中使用正则表达式? ...

  2. java 中的正则表达式_Java中的正则表达式–软介绍

    java 中的正则表达式 正则表达式是一种可以应用于文本(Java中的String)的模式. Java提供了java.util.regex包,用于与正则表达式进行模式匹配. Java正则表达式与Per ...

  3. java正则表达式性能_译:Java 中的正则表达式性能概述

    译者:Darren Luo 1. 概述 在本快速教程中,我们将展示模式匹配引擎是如何工作的.我们还将介绍在 Java 中优化正则表达式的不同方式. 有关正则表达式的的使用介绍,请参阅此文. 2. 模式 ...

  4. Java中的正则表达式 - Java Regex示例

    Java中的正则表达式 - Java Regex示例 欢迎使用Java中的正则表达式.它在Java中也称为Regex.当我开始编程时,java正则表达式对我来说是一场噩梦.本教程旨在帮助您掌握Java ...

  5. 详解Java中的正则表达式

    详解Java中的正则表达式,并列出常用的正则表达式语法和一些常用的场景. 判断一个字符串是否是由数字组成: 当不使用正则表达式的时候的实现代码: public class RegexDemo01 {p ...

  6. java 正则表达式 判断 日期_怎么在java中利用正则表达式对时间日期进行判断

    怎么在java中利用正则表达式对时间日期进行判断 发布时间:2020-12-08 16:18:34 来源:亿速云 阅读:105 作者:Leah 这篇文章给大家介绍怎么在java中利用正则表达式对时间日 ...

  7. java中,正则表达式的使用 (最普通使用,Group,贪婪模式)

    目录 0.最普通的使用 1.正则表达式有Group功能. 2.正则表达式中的贪婪模式, 非贪婪模式(*?) 3.find() 与 matches() 之间的区别 ↓循环获取所有文件 ↓文件内部内容读取 ...

  8. Java中的正则表达式 regex

    常用类解析:正则表达式 regex 前言 一.正则表达式 二.匹配规则 三.匹配任意字符 四.匹配数字 五.匹配常用字符 六.匹配空格字符 七.匹配非数字 八.重复匹配 九.正则表达式小总结 十.匹配 ...

  9. java中的正则表达式类---表情转换实例

    Java中的正则表达式类 ________________________________________ public interface MatchResult 匹配操作的结果. 此接口包含用于确 ...

  10. 【JavaSE】java中的正则表达式(从0到1学会正则表达式)

    文章目录 前言 一.正则表达式的三个常用类 1.Pattern类 2.Matcher类 3.PatternSyntaxException类 二.正则表达式的底层实现 1.Matcher.find()和 ...

最新文章

  1. NodeJS + Aliyun 实现 DDNS
  2. RxJava 教程第一部分:入门之 生命周期管理
  3. python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞
  4. 汇编语言——十种寻址方式
  5. Hadoop下如何执行脚本
  6. 基于HTML5技术的电力3D监控应用(三)
  7. Flex4之皮肤定制
  8. java 反射抽象_Java实现抽象工厂模式+java的反射的机制
  9. OpenCV学习(7) 分水岭算法(1)
  10. java并发队列之DelayQueue
  11. C语言之简单通讯录制作
  12. AM调制解调matlab实验报告,基于MATLAB的AM调制解调系统仿真报告
  13. 为了防止世界被破坏,春运的抢票攻略在等着你们
  14. 苹果计算机远程桌面连接,Mac电脑怎么远程桌面连接?
  15. 【模型 6.0】以前的你遇事不知所措,现在的你可以镇定自若,靠它!
  16. 计算机分辨率无法调整,电脑分辨率调不了怎么办?电脑分辨率不能调的解决方法...
  17. 魔改一个自以为不太好的简历
  18. 经典的W2kXP添加删除硬件
  19. Credential Provider
  20. Testudo:Spartan + Groth16 的R1CS ZKP证明系统

热门文章

  1. Python反编译apk,获取各类信息
  2. 存储器容量大小和芯片选择
  3. 服务器安装虚拟声卡,虚拟声卡安装使用 虚拟声卡注意事项
  4. 跨越鸿沟:计算机视觉-学术界与工业界的GAP有多大?
  5. 一阶惯性环节如何实现跟踪性能与滤波性能共存(一)
  6. c语言编程软件平板_notepad++可编译C版下载-notepad++可编译C语言版下载2017版-西西软件下载...
  7. 苹果手机怎么编程c语言,C语言编程ios版下载_C语言编程苹果版
  8. 新浪微博与腾讯微博的开放平台比较 -- 从程序员的角度
  9. python工厂模式和单例模式_python之单例模式和工厂模式
  10. 拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]